“Open-source, self-hosted customer support desk in a single binary. A lightweight alternative to Intercom, Zendesk, Chatwoot.” — the project's own words, on GitHub
What it does
You get one support inbox for your whole team, running on a machine you control. Email and the live chat widget on your website land in the same place, so nobody checks two tools or forgets a thread. Saved replies handle the questions you answer every week, rules tag and route conversations to the right person, and a help centre you publish lets customers find answers before they write in. An AI assistant can answer chat from that help centre and hand off to a person when stuck, and a copilot drafts replies inside the inbox. Response-time targets and satisfaction surveys show whether support is getting better.
Replaces
a help-desk subscription
For
A founder whose support has outgrown a shared email login and who wants the team's tickets, chat and help articles in one place they own.
Not for
Not for someone who wants a hosted tool with no server to look after, this needs Docker or a server with a Postgres database and Redis running underneath it, and someone to keep them updated.
Setup
30 min · Claude Code, Kimi, Gemini CLI or Codex · docker, docker compose, a server or small cloud machine to run it on
Get it running
Paste this into the AI that runs on your computer. It does the install, checks it works, and tells you what to type first. If anything fails, paste the error back to it.
Paste into Claude Code
Install libredesk (https://github.com/abhinavxd/libredesk) on this computer and get it working for me. I am not a developer; explain each step in one line as you go and never skip one. You are Claude Code, running on my machine.
1. Check what this machine already has (git, Python or Node as the project needs, Docker if the README says so). Tell me anything missing and install it, asking me before anything that needs my password.
2. Download docker-compose.yml and config.sample.toml from the repo root with curl, copy the sample to config.toml, and start it with docker compose up -d, exactly as the README's Docker section shows.
3. Configure it. If it needs an API key or a login, stop and ask me for it; never guess one and never store it anywhere except where the README says.
Tool-specific notes: Download docker-compose.yml and config.sample.toml from the repo root with curl, then cp config.sample.toml config.toml; the compose file brings up Postgres and Redis alongside the app, so nothing else needs installing, and the config only needs editing if you change those defaults.
Run docker compose up -d, then docker exec -it libredesk_app ./libredesk --set-system-user-password to set the admin password; there is no default one.
It opens at http://localhost:9000 on port 9000; log in with the username System and the password you just set, and confirm the inbox loads, that is the smoke test.
The usual failure is file uploads: with the default fs upload provider the uploads directory must already exist and be writable, Libredesk does not create it (mkdir uploads && chmod 755 uploads on a binary install).
If it ever faces the internet, put Nginx in front and set the X-Client-IP header to $remote_addr, or every request is rate-limited and logged as coming from the proxy.
4. Run the smallest test the README gives, and show me the output.
5. When it works, tell me what to type first, in one line, for this job: Connect one real inbox.
If anything fails, show me the exact error and fix it before going on.
Paste into Kimi
Install libredesk (https://github.com/abhinavxd/libredesk) on this computer and get it working for me. I am not a developer; explain each step in one line as you go and never skip one. You are Kimi, running on my machine.
1. Check what this machine already has (git, Python or Node as the project needs, Docker if the README says so). Tell me anything missing and install it, asking me before anything that needs my password.
2. Download docker-compose.yml and config.sample.toml from the repo root with curl, copy the sample to config.toml, and start it with docker compose up -d, exactly as the README's Docker section shows.
3. Configure it. If it needs an API key or a login, stop and ask me for it; never guess one and never store it anywhere except where the README says.
Tool-specific notes: Download docker-compose.yml and config.sample.toml from the repo root with curl, then cp config.sample.toml config.toml; the compose file brings up Postgres and Redis alongside the app, so nothing else needs installing, and the config only needs editing if you change those defaults.
Run docker compose up -d, then docker exec -it libredesk_app ./libredesk --set-system-user-password to set the admin password; there is no default one.
It opens at http://localhost:9000 on port 9000; log in with the username System and the password you just set, and confirm the inbox loads, that is the smoke test.
The usual failure is file uploads: with the default fs upload provider the uploads directory must already exist and be writable, Libredesk does not create it (mkdir uploads && chmod 755 uploads on a binary install).
If it ever faces the internet, put Nginx in front and set the X-Client-IP header to $remote_addr, or every request is rate-limited and logged as coming from the proxy.
4. Run the smallest test the README gives, and show me the output.
5. When it works, tell me what to type first, in one line, for this job: Connect one real inbox.
If anything fails, show me the exact error and fix it before going on.
Paste into Gemini CLI
Install libredesk (https://github.com/abhinavxd/libredesk) on this computer and get it working for me. I am not a developer; explain each step in one line as you go and never skip one. You are Gemini CLI, running on my machine.
1. Check what this machine already has (git, Python or Node as the project needs, Docker if the README says so). Tell me anything missing and install it, asking me before anything that needs my password.
2. Download docker-compose.yml and config.sample.toml from the repo root with curl, copy the sample to config.toml, and start it with docker compose up -d, exactly as the README's Docker section shows.
3. Configure it. If it needs an API key or a login, stop and ask me for it; never guess one and never store it anywhere except where the README says.
Tool-specific notes: Download docker-compose.yml and config.sample.toml from the repo root with curl, then cp config.sample.toml config.toml; the compose file brings up Postgres and Redis alongside the app, so nothing else needs installing, and the config only needs editing if you change those defaults.
Run docker compose up -d, then docker exec -it libredesk_app ./libredesk --set-system-user-password to set the admin password; there is no default one.
It opens at http://localhost:9000 on port 9000; log in with the username System and the password you just set, and confirm the inbox loads, that is the smoke test.
The usual failure is file uploads: with the default fs upload provider the uploads directory must already exist and be writable, Libredesk does not create it (mkdir uploads && chmod 755 uploads on a binary install).
If it ever faces the internet, put Nginx in front and set the X-Client-IP header to $remote_addr, or every request is rate-limited and logged as coming from the proxy.
4. Run the smallest test the README gives, and show me the output.
5. When it works, tell me what to type first, in one line, for this job: Connect one real inbox.
If anything fails, show me the exact error and fix it before going on.
Paste into Codex
Install libredesk (https://github.com/abhinavxd/libredesk) on this computer and get it working for me. I am not a developer; explain each step in one line as you go and never skip one. You are Codex, running on my machine.
1. Check what this machine already has (git, Python or Node as the project needs, Docker if the README says so). Tell me anything missing and install it, asking me before anything that needs my password.
2. Download docker-compose.yml and config.sample.toml from the repo root with curl, copy the sample to config.toml, and start it with docker compose up -d, exactly as the README's Docker section shows.
3. Configure it. If it needs an API key or a login, stop and ask me for it; never guess one and never store it anywhere except where the README says.
Tool-specific notes: Download docker-compose.yml and config.sample.toml from the repo root with curl, then cp config.sample.toml config.toml; the compose file brings up Postgres and Redis alongside the app, so nothing else needs installing, and the config only needs editing if you change those defaults.
Run docker compose up -d, then docker exec -it libredesk_app ./libredesk --set-system-user-password to set the admin password; there is no default one.
It opens at http://localhost:9000 on port 9000; log in with the username System and the password you just set, and confirm the inbox loads, that is the smoke test.
The usual failure is file uploads: with the default fs upload provider the uploads directory must already exist and be writable, Libredesk does not create it (mkdir uploads && chmod 755 uploads on a binary install).
If it ever faces the internet, put Nginx in front and set the X-Client-IP header to $remote_addr, or every request is rate-limited and logged as coming from the proxy.
4. Run the smallest test the README gives, and show me the output.
5. When it works, tell me what to type first, in one line, for this job: Connect one real inbox.
If anything fails, show me the exact error and fix it before going on.
What to point it at first
1
Connect one real inbox
Connect your support email address as an inbox, send it a message from a personal account, and check it shows up as a conversation and that your reply actually arrives back.
2
Turn your five most-sent replies into macros
Take the answers your team pastes most often, save each as a macro that also sets a tag and assigns the conversation, then answer a real ticket with one and check the tag and assignment happened.
3
Publish ten help articles and test the copilot on them
Put ten real articles in the help centre, then ask the copilot the questions customers ask and check each drafted answer against the article before you trust it with a customer.
What it must never do unattended
It drafts. It never replies to a customer.
Anything about money, a refund or a legal word goes to a person.
Keep the AI assistant off on live chat until you have read its answers against your help centre; the copilot drafting inside the inbox is where to start.
Never put port 9000 straight on the internet; run it behind the reverse proxy the docs describe.
Who made it
abhinavxd/libredesk on GitHub, under the AGPL-3.0 licence. 2,907 stars, checked 11 September 2026. Last change 8 September 2026. We did not write it; we checked it, and wrote this page so you can use it.