Tock: the open source conversational AI toolkit, from Docker to a first bot
Tock, the open source conversational AI toolkit.
At a glance
- What is it?
- Tock is a Kotlin-based platform for building bots with a conversational DSL, a visual studio and built-in channel connectors. It fits teams that want to self-host the whole NLP stack, and it costs you a multi-service deployment to do so.
- Who is it for?
- Tock is for teams that want to own the whole conversational stack: a Kotlin service or a REST bot, the NLP pipeline, and the channel connectors, deployed on their own infrastructure. It is not for someone who wants a hosted bot in an afternoon, and not for a project with no JVM or Docker operational capacity.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Tock solves, and who ends up running it
A bot that answers on Messenger, WhatsApp and a web widget is usually three integrations, one intent model, and a pile of glue. Tock's answer is to make the bot the unit of work and the channels the adapters. The README describes it as an "Open Conversational AI platform to build Bots" with a natural language processing stack, a user interface called Tock Studio, a conversational DSL, and built-in connectors for text and voice channels.
The audience is narrower than the description suggests. The repository is Kotlin, built with Maven, and the top level splits into bot/, nlp/, stt/, translator/, gen-ai/, shared/ and util/ modules. If your team does not want to operate a JVM application plus its datastores, the platform's own breadth becomes the problem. The project also ships a live demo at demo.tock.ai, which is the fastest way to see Tock Studio before committing to a deployment.
How the pieces fit: bot, NLP, connectors and Studio
The architecture visible in the repository layout is a set of services rather than a library. The bot/ module holds the bot runtime and the conversational DSL implementations; nlp/ holds the natural language processing side; stt/ and translator/ are separate modules for speech and translation; shared/ carries code used across them; gen-ai/ is its own top-level module. Tock Studio is the user interface where stories and analytics are built, and it talks to the same back end.
The README states that the NLP stack is compatible with OpenNLP, Stanford, Rasa and more. That phrasing matters: Tock does not ship one opinionated model. You choose an implementation and run it alongside the bot service, which means the resource profile of a Tock deployment depends on a decision the README leaves to you. The conversational DSL is offered for Kotlin, Nodejs, Python and REST API, so a bot can live outside the JVM entirely and speak to Tock over HTTP. Connectors are the other half: the README lists Messenger, WhatsApp, Google Assistant, Alexa and Twitter, and the repository topics add Slack, Teams, RocketChat and Apple Business Chat. Custom web and mobile integration is supported through React and Flutter toolkits.
Installing Tock with the Docker configurations
The README does not walk through a full install. It points to a separate repository, theopenconversationkit/tock-docker, described as "Docker configurations", and to the documentation at doc.tock.ai/tock/master/. That is where the deployment steps live, so treat the commands below as the entry point rather than the whole procedure. Clone the Docker repository first, then read its compose files before starting anything, because the services and their databases are defined there.
git clone https://github.com/theopenconversationkit/tock-docker.git
cd tock-dockerOnce the stack is up, the first real use is not a command but a screen: open Tock Studio in a browser, create a bot, and build a story. The README gives no port for Studio in the information available here, so take the address from the documentation or from the compose file you just cloned. If you prefer to write the bot as code, the conversational DSL is available for Kotlin, Nodejs, Python and REST API, and the samples/ directory in the main repository contains a Maven-based example (samples/pom.xml) that shows how a bot module is structured.
Contributors to the repository itself have their own setup. Kotlin code is formatted with ktlint through a Maven antrun target, and the Python parts use pre-commit hooks:
mvn antrun:run@ktlint-format
pip install pre-commit
pre-commit installThe README notes that a snapshot build may be needed first with mvn install -Dktlint.fail=false. These commands are for people changing Tock, not for people deploying a bot on top of it.
Where Tock is the wrong choice
The clearest limitation is operational weight. Tock is a platform with a studio, an NLP layer and a connector layer, and the README's own summary of deployment is "Deploy anywhere in the Cloud or On-Premise with Docker". That is a benefit only if you have somewhere to deploy it and someone to keep it running. For a single-channel FAQ bot, the number of moving parts is out of proportion to the task.
The second limitation is documentation depth in this repository. The README is a signpost: it links to doc.tock.ai, to the Docker repository and to Gitter for contact. It does not document installation, configuration keys, ports or upgrade paths, and it does not state which NLP implementation is the default or recommended one. Anything you need to decide about running Tock in production has to come from the documentation site, and if that site is silent on a point, the README will not fill the gap.
A third consideration is channel coverage. The built-in connectors are a fixed list. If your users are somewhere that list does not reach, you are writing the integration yourself, and the README does not describe how much of the connector contract is public.
Tock against Rasa, and why the comparison is not symmetric
Rasa appears in Tock's own README, in the sentence about NLP compatibility. That is the honest framing: Tock can sit on top of a Rasa NLP implementation rather than replace it. The difference is scope. Rasa is an NLP and dialogue framework you embed in your own service; Tock is a platform that adds a studio for building stories, a bot runtime, and connectors for channels such as Messenger, WhatsApp and Alexa.
If your problem is intent classification and dialogue policy, and you already have a service to put it in, a framework is the smaller commitment. If your problem is that marketing wants to edit the bot's answers without a deploy, and the same bot has to answer on three channels, the studio and the connectors are the reason to pick Tock. Choosing Tock for the NLP alone means carrying the rest of the platform for nothing.
Maintenance, versions and the Apache-2.0 licence
The repository is not archived and the last push was on 2026-09-01. Recent releases follow a calendar-style scheme: tock-26.3.4 on 2026-09-01, tock-26.3.3 on 2026-07-03, and tock-26.3.2 on 2026-05-22. The gaps between those three are roughly two months, which tells you the release cadence but not the effort required to move between them. The README does not document an upgrade procedure or a compatibility policy between releases, so plan to read the release notes for each jump.
Tock is Apache-2.0. That is a permissive licence, and it means you can use the platform in a commercial product, but it also means the project carries no warranty and no support obligation. Nothing in the README offers commercial support. If you need an answer, the stated contact is a Gitter channel, which is a community room rather than a support desk. This is a description of the licence terms, not legal advice; check how Apache-2.0 interacts with your own distribution model.
Editorial conclusion
Tock is for teams that want to own the whole conversational stack: a Kotlin service or a REST bot, the NLP pipeline, and the channel connectors, deployed on their own infrastructure. It is not for someone who wants a hosted bot in an afternoon, and not for a project with no JVM or Docker operational capacity. Before adopting it, verify two things in the documentation: which NLP implementation you intend to run, and whether your target channel is among the built-in connectors, because the README lists Messenger, WhatsApp, Google Assistant, Alexa and Twitter as examples rather than as an exhaustive set. Then pull the tock-docker repository and confirm the compose files cover the databases you plan to run in production. The last push to the repository was on 2026-09-01.
Frequently asked questions
What exactly is Tock?
Tock is an open source conversational AI platform for building bots, written mainly in Kotlin. The README describes it as an NLP stack, a Tock Studio interface for building stories and analytics, a conversational DSL for Kotlin, Nodejs, Python and REST API, and built-in connectors for text and voice channels.
What are the cons of using Tock?
It is a multi-service platform rather than a library, so you need the operational capacity to run it, typically with the Docker configurations in the separate tock-docker repository. The README also does not document installation, configuration or upgrades, so those details have to come from the documentation site.
How much does it cost to run Tock?
The project is Apache-2.0 and the README names no paid tier or hosted plan, so the cost is your own infrastructure. The README states that Tock can be deployed in the Cloud or On-Premise with Docker, and the resource profile depends on which NLP implementation you run alongside it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/theopenconversationkit-tock)