Bytedesk: an AGPL/BSL Java monorepo that bundles IM, helpdesk and AI agents
Open Souce IM with AI powered live-chat, email, ticket support, omni-channel customer service,alternative to slack + zendesk/intercom/hubspot/ada/decagon/sierra
At a glance
- What is it?
- Bytedesk packages team chat, omnichannel customer service, ticketing, a knowledge base and RAG agents into one Maven monorepo, with a Docker Compose path for verification. The licence terms are the first thing to read, not the last.
- Who is it for?
- Adopt Bytedesk if you need chat, tickets, a knowledge base and an AI agent inside one Java codebase you can modify, and you are comfortable with a licence that forbids hosting it as a service. Do not adopt it if you plan to sell or resell it as a hosted product, or if you need a licence that a legal team can approve without a commercial conversation.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Bytedesk solves: one stack instead of four subscriptions
Most support organisations end up stitching together a team chat tool, a live chat widget, a ticketing system and a knowledge base. Bytedesk's answer is to ship all of those as modules of a single Java application. The repository topics list the products it positions itself against: slack, zendesk, intercom, hubspot, ada, decagon and sierra. The README describes the project as "AI powered Omnichannel customer service With Team Cooperation", and the module list backs that up: TeamIM for organisational structure, roles and permissions; Service for channels, routing strategies and the agent workbench; KBase for internal docs, a help center and FAQ; Ticket with SLA management and reports; AI Agent with Ollama, DeepSeek and ZhipuAI backends plus RAG and function calling. There is also a workflow module covering forms, processes and ticket processes, a Voice of Customer module for feedback and surveys, and optional plugins for FreeSWITCH call center and WebRTC video. The intended audience is a team that wants to own the whole customer conversation surface rather than pay per seat across several vendors. That is a real cost argument, but it is also a scope argument: one deployment means one upgrade path, one database, one permission model.
What the monorepo layout tells you about coupling
The root pom.xml drives a Maven multi-module build. The top-level directories are channels (douyin, shop, social, wechat integrations), demos, deploy (docker, k8s, server configs), enterprise (ai, call, core, kbase, service, ticket), images, jmeter for performance scripts, logs, modules (the core product modules), plugins (freeswitch, webrtc, open platform), projects for custom extensions and starter for entry points. Two things stand out. First, the split between modules and enterprise is the important one: the README's feature list mixes items from both trees, so a feature you read about may live under enterprise rather than in the open modules. That is the first thing to check against your own build. Second, plugins are genuinely optional: FreeSWITCH, WebRTC and the open platform sit outside the core, which means a text-only deployment does not have to carry telephony dependencies. The channels directory being separate from modules suggests channel adapters are added per integration rather than compiled into the core. The repository also carries its own jmeter directory, so load scripts ship with the source rather than living in a separate performance repo.
Getting a verification instance running with docker compose
The README offers two paths. For a quick check without cloning the monorepo, it points at a standalone repository, bytedesk-docker-compose, which it says contains exactly the same content as the deploy/docker folder and is kept in sync. The commands given are: git clone https://github.com/Bytedesk/bytedesk-docker-compose.git, cd bytedesk-docker-compose, cp .env.example .env, then ./start.sh. The default keyword is all, which the README says starts redis plus elasticsearch plus MySQL plus Artemis plus the bytedesk app image. The second keyword, middleware, starts redis, elasticsearch, the selected database and the message queue but no bytedesk image, and is described as intended for local development running bytedesk from source. The full-repository path is: git clone https://github.com/Bytedesk/bytedesk.git, cd bytedesk/deploy/docker, cp .env.example .env, then ./start.sh mysql artemis standard middleware. The access address is http://127.0.0.1:9003/ with default account admin@email.com and password admin. Note that the full-repo example passes the middleware keyword, so it does not start the application image; if you want the app running from that path, check deploy/docker/readme.md for the correct combination. The README also lists PostgreSQL, Oracle, RabbitMQ, noai, webrtc, call and full stack as further combinations. Change the default credentials before the instance is reachable from anywhere but localhost.
The licence is the adoption decision, not a footnote
The repository metadata says AGPL-3.0, but the README header carries a different and more restrictive notice: "Please be aware of the BSL license restrictions before installing Bytedesk IM", naming Business Source License 1.1 and linking to the LICENSE file on main. The header states that "selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license". These two signals do not agree, and I cannot resolve which governs from the material available. Treat that as the single most important thing to verify before any deployment: read the LICENSE file itself, not the repository badge. If the BSL text applies, the practical consequence is that internal use is one thing and offering Bytedesk to third parties as a hosted service is another, explicitly prohibited thing. That rules out the most obvious commercial shape for a product like this, which is running it for your own customers on your own infrastructure. This is not legal advice; the point is that the licence question has to be answered by reading the file, because the two public signals point in different directions.
Where the AI agent sits, and what it depends on
The AI module is documented as supporting chat with Ollama, DeepSeek and ZhipuAI, chat with a knowledge base using RAG, function calling and MCP. The RAG path is the interesting one for support teams, because it ties the agent to the KBase module rather than treating the model as a standalone chatbot. The deployment keywords include noai, which implies the AI components can be left out of a stack entirely. That matters for two reasons. First, RAG quality depends on the knowledge base content and its chunking, and the README does not describe the retrieval configuration, embedding model choice or index parameters in the material provided. Second, elasticsearch is part of the default middleware set, which is consistent with a search-backed retrieval layer, but the README does not state that the knowledge base index lives there. If retrieval behaviour is central to your evaluation, that is undocumented territory you would have to read the modules/ai and modules/kbase readmes to understand. The model backends named are all external services or a local Ollama instance, so the AI features do not add a bundled model to the deployment.
The operational weight you take on
The default stack is redis, elasticsearch, MySQL and Artemis, plus the application. That is four pieces of middleware before Bytedesk itself starts, and the README lists PostgreSQL, Oracle and RabbitMQ as alternatives, so the combinations multiply. Elasticsearch alone is a meaningful operational commitment in terms of memory and upgrade attention. The k8s assets under deploy suggest the project expects container orchestration for larger installs, but the README does not describe a Helm chart, a supported upgrade procedure or a migration path between releases in the material provided. Release cadence is visible: v4.4.0 on 2026-09-05, v4.4.1 on 2026-09-08 and v4.4.5 on 2026-09-10, three releases inside a week. That pace is a maintenance signal in both directions: fixes arrive quickly, and the gap between releases is small enough that a pinned version is the sensible default for production. There is no stated long-term support branch in the README. Budget for someone who can operate the middleware set, not just the application.
What Bytedesk is not, and what to compare it against
Bytedesk is not a lightweight embeddable chat widget you drop into a page and forget. It is a full application with an admin dashboard, an agent workbench and a database schema you now own. If your requirement is a single support inbox with a script tag, a hosted product will be less work than running four middleware services. The honest comparison is against assembling separate tools: a team chat product for internal messaging, a helpdesk for tickets and SLAs, and a separate RAG or agent platform. That route means several vendors, several bills and integration work between them, but each component is maintained by someone else. Bytedesk's difference in approach is that the integration is already done in one codebase with one permission model, and you can modify any of it because the source is there. The cost is that you inherit the whole surface at once, including the parts you do not use. The open source clients listed (desktop, QT, mobile, siphone, conference, plus FreeSWITCH, Janus and TTS/ASR docker images) reinforce that this is a platform play, not a component. Pick it when owning the stack is the point; avoid it when owning the stack is the risk.
Editorial conclusion
Adopt Bytedesk if you need chat, tickets, a knowledge base and an AI agent inside one Java codebase you can modify, and you are comfortable with a licence that forbids hosting it as a service. Do not adopt it if you plan to sell or resell it as a hosted product, or if you need a licence that a legal team can approve without a commercial conversation. Before committing, verify the licence text in the repository, confirm which modules require the enterprise directory, and check whether the middleware set your environment can run (MySQL plus Artemis versus PostgreSQL or Oracle plus RabbitMQ) is covered by deploy/docker/readme.md.
Community notes