Repository navigation
Ecbot v0.1.0
The first self-hostable release. Covers merged PRs through #452.
Self-host
- Run the full stack with
docker compose --profile full up -d --build(#417). Caddy serves the app with automatic TLS for your domain (SITE_URL) and proxies/api. - A one-shot migrate service applies migrations and the required seeds (countries, roles, API keys; no demo users) before the API starts.
- The Postgres password comes from
POSTGRES_PASSWORDin a root.env, generated bypnpm setup:local. Redis is pinned to 7-alpine. Nothing is published beyond 127.0.0.1 except what Caddy serves. - Create the first account with
user:create. No email provider is needed. - Facebook, Instagram and Zalo OAuth callbacks are derived from
SITE_URL. - New guide:
docs/self-hosting.md. - The
aiservice no longer crashes on a blank or malformedSENTRY_DSN(#429).
Channels
- New: Threads (replies and mentions) (#428, #431).
- Shipped: Messenger, Zalo OA, Telegram, WhatsApp Business, website widget, REST API channel.
- Threads and Instagram are built but hidden until configured, and go live after Meta App Review.
- Telegram, the website widget and the REST API channel need no platform approval. Messenger, Instagram, Threads and WhatsApp Business need your own approved Meta app. Zalo needs your own approved Zalo app.
- Channels you unlink are freed, so another workspace can connect them (#430).
- Personal Facebook and Instagram profiles are hidden from channel lists (#406).
- Website widget: restart starts a fresh conversation (#425). Resolved conversations reopen and handoffs stay open (#426).
Agents and tools
- HTTP tools:
{name}placeholders in URLs, and a Path/Query/Body choice per parameter (#432). - Agent and knowledge display fixes (#424).
Workspace and admin
- Admins can impersonate users whose password expired or whose email is unverified (#413).
- Admin users list can be sorted by last seen (#443). Admin agent and knowledge pages show what the client shows (#420).
App
- Cmd/Ctrl+K command palette (#451).
- The getting-started checklist separates "connect a channel" from "link an agent" (#405), and a "Connect to an agent" step follows a channel connection (#421).
- Polish (#419): dates and times follow the UI language, labelled send buttons, widget name placeholder.
Reliability
- The token-refresh job no longer blocks every account when a key rotation makes all tokens undecryptable. It logs once and skips the run (#418, closes #13).
Under the hood
- Linting moved from ESLint to oxlint (#449, #450, #452).
- Shared skill form and steps editor as
@repo/ui/skill-steps(#446). certifibumped inapps/ai(#422).- README links the website, docs, blog and use cases (#404).
Known limitations
- No prebuilt images. The compose file builds from source.
- Background jobs run through the Cloud Tasks emulator, which keeps its queue in memory. Jobs still waiting at a restart are lost.
- Self-host sends no
frame-ancestorsheader for the website widget. The API checks allowed sites, but the browser does not refuse framing on other sites. - Open issues: #77 and #14 (API end-to-end tests), #18 (
check-typesnot enforced), #181 (Telegram replies take 15-20 s), #153 (embed guides for Haravan, Sapo and similar), #251 (production walkthrough).
Licence: AGPL-3.0.