Abhinav Raut b570502a20 remember when a provider needs max_completion_tokens and track token usage
Some OpenAI-compatible endpoints reject max_tokens and want
max_completion_tokens. Before, every request paid a 400 round trip to
learn this. Now we cache the swap per base URL and model, so once one
request adapts, later requests send the right param up front. Only adapt
when the error code is unsupported_parameter, not on any max_tokens error.

Parse the usage block from provider responses into a TokenUsage struct and
log prompt/completion/total tokens. Added debug logging of model content,
tool results, and RAG chunk text to make agent runs easier to trace.

Widget side: clean up chat bubble spacing by moving margins off the text
and onto trailing elements, and drop the bottom margin on the last
paragraph/list in rendered HTML so bubbles don't have extra padding.
2026-07-19 18:47:36 +05:30
2026-07-19 10:57:23 +05:30
2026-05-31 16:31:04 +05:30
2024-10-25 15:05:40 +05:30
2026-07-10 15:34:09 +05:30

Zerodha Tech Badge

libredesk

Modern, open source, self-hosted omnichannel customer support desk. Live chat, email, and more in a single binary.

image

Visit libredesk.io for more info. Check out the live demo.

Features

  • Omnichannel inbox
    Live chat, email, and more — all in one inbox. Connect support@, billing@, sales@ and manage every conversation from a single, unified interface.
  • Live chat widget
    Embed a real-time chat widget on your website. Engage visitors instantly and handle live conversations right from your support desk.
  • Granular permissions
    Create custom roles with granular permissions for teams and individual agents.
  • Automations
    Eliminate repetitive tasks with powerful automation rules. Auto-tag, assign, and route conversations based on custom conditions.
  • CSAT surveys
    Measure customer satisfaction with automated surveys.
  • Macros
    Save frequently sent messages as templates. With one click, send saved responses, set tags, and more.
  • Organization
    Keep conversations organized with tags, custom statuses for conversations, and snoozing. Find any conversation instantly from the search bar.
  • Auto assignment
    Distribute workload with auto assignment rules. Auto-assign conversations based on agent capacity or custom criteria.
  • SLA management
    Set and track response time targets. Get notified when conversations are at risk of breaching SLA commitments.
  • Custom attributes
    Create custom attributes for contacts or conversations such as the subscription plan or the date of their first purchase.
  • AI-assist
    Instantly rewrite responses with AI to make them more friendly, professional, or polished.
  • Activity logs
    Track all actions performed by agents and admins—updates and key events across the system—for auditing and accountability.
  • Webhooks
    Integrate with external systems using real-time HTTP notifications for conversation and message events.
  • Command bar
    Opens with a simple shortcut (CTRL+K) and lets you quickly perform actions on conversations.

And more — checkout libredesk.io or try the live demo.

Installation

Docker

The latest image is available on DockerHub at libredesk/libredesk:latest

# Download the compose file and sample config file in the current directory.
curl -LO https://github.com/abhinavxd/libredesk/raw/main/docker-compose.yml
curl -LO https://github.com/abhinavxd/libredesk/raw/main/config.sample.toml

# Copy the config.sample.toml to config.toml and edit it as needed.
cp config.sample.toml config.toml

# Run the services in the background.
docker compose up -d

# Setting System user password.
docker exec -it libredesk_app ./libredesk --set-system-user-password

Go to http://localhost:9000 and login with username System and the password you set using the --set-system-user-password command.

See installation docs


Binary

  • Download the latest release and extract the libredesk binary.
  • Edit config.toml as needed.
  • ./libredesk --install to setup the Postgres DB.
  • Run ./libredesk --set-system-user-password to set the password for the System user.
  • Run ./libredesk and visit http://localhost:9000 and login with email System and the password you set using the --set-system-user-password command.

See installation docs


Developers

The backend is written in Go and the frontend is Vue.js 3 with Shadcn UI.

Translators

You can help translate libredesk into your language on Crowdin.

S
Description
Open-source, self-hosted customer support desk in a single binary. Email and live chat. A lightweight alternative to Intercom, Zendesk, Chatwoot.
Readme AGPL-3.0 38 MiB
Languages
Go 44.6%
Vue 28.3%
JavaScript 23.1%
HTML 1.4%
CSS 1.2%
Other 1.2%