SmartTicket is a self-hosted ticketing & knowledge collaboration platform. One static binary, embedded SQLite, RBAC, SLA tracking, and bring-your-own-LLM RAG. Deploy in five minutes; keep complete control of your data.
Live demo login: visitor@smartticket.local / DemoPass123!
$ git clone https://github.com/liliang-cn/smartticket && cd smartticket && docker compose up -d
The essentials, stated plainly — for people and for the AI engines that summarize this page.
docker compose upTickets, SLAs, a versioned knowledge base, role-based access, customer isolation and AI assistance — all built in, all running from a single process you own.
Priority & severity, assignment, threaded conversations, attachments, status workflow and audit trail — from intake to resolution.
Per-tier response and resolution targets, configurable support levels, and per-node / annual subscription tracking.
Versioned articles with public / internal visibility controls, full-text and semantic search, and a clean read experience.
Roles, granular permissions, and a service-layer actor model that scopes every customer to only their own tickets — REST and MCP alike.
Any OpenAI-compatible provider for chat and embeddings — OpenAI, Azure, DeepSeek, Ollama, vLLM. RAG over your knowledge base, keys encrypted at rest.
Replies, assignments and status changes surface as live in-app notifications — no email server required to stay in the loop.
Export tickets, knowledge, users, products and services to JSON, CSV, XML or Markdown. Your data is portable by design.
Set your own product name, accent color and logo from a settings page — applied across the console and the sign-in screen.
A Model Context Protocol server exposes tickets & replies as tools, so agents can triage and respond programmatically.
SmartTicket ships as one self-contained binary that serves the web console and the API together. No database server, no message queue, no reverse proxy required to get started.
# Recommended — one command, nothing else to install git clone https://github.com/liliang-cn/smartticket.git cd smartticket # (recommended) generate strong secrets echo "SMARTTICKET_JWT_SECRET=$(openssl rand -hex 32)" > .env echo "SMARTTICKET_SECRET_KEY=$(openssl rand -hex 32)" >> .env docker compose up -d # → http://localhost:6533 # login: admin@smartticket.local / admin123 (change it!)
# Prerequisites: Go 1.25+, Node 20+, pnpm git clone https://github.com/liliang-cn/smartticket.git cd smartticket # builds the console and embeds it into one static binary make build-all ./build/smartticket serve --config configs/config.dev.yaml # → http://localhost:6533
# Build once, install the single binary make build-all sudo cp build/smartticket /usr/local/bin/ # Set persistent secrets + point at the prod config # (edit storage.data_path in configs/config.prod.yaml first) export SMARTTICKET_JWT_SECRET=$(openssl rand -hex 32) export SMARTTICKET_SECRET_KEY=$(openssl rand -hex 32) smartticket serve --config configs/config.prod.yaml # Put TLS in front with Caddy/Nginx, or use the # systemd unit in deployments/systemd/.
docker compose up brings up the whole app on port 6533.Settings.AI Providers.Everything — tickets, knowledge, the RAG vector store and config — lives in the smartticket-data volume (a single SQLite file plus uploads). Back it up by copying the volume; restore by putting it back.
SmartTicket is single-tenant by design: one organization, one instance. There is no SaaS backend phoning home, no shared multi-tenant database, and no required third-party services.
┌─ your server ──────────────┐ │ smartticket (1 binary) │ │ ├─ web console :6533 │ │ ├─ REST API :6533 │ │ ├─ MCP server (stdio) │ │ └─ SQLite + RAG (vol) │ └────────────┬───────────────┘ │ optional, you choose your LLM provider
Configure chat and embedding providers independently — each with its own base URL, model and key. Knowledge articles are indexed into a built-in vector store for retrieval-augmented answers.
Open Settings → Access, add your identity provider's metadata URL, map the email claim, then enable SSO enforcement for the team…
Go on the backend, React on the front, SQLite underneath. No exotic runtime, no per-seat licensing, no surprise dependencies.
No. SQLite is embedded directly in the binary and there are no other required services. The whole app is one process — that is the entire point.
With Docker: git pull && docker compose up -d --build. Your data lives in a named volume and is untouched by rebuilds. From source: git pull && make build-all and restart the binary. Schema migrations run automatically on startup.
No — tickets, SLA, knowledge base and RBAC all work without any LLM configured. AI features are opt-in: add a provider only if you want semantic search and RAG answers.
No. Customer-role users are scoped at the service layer to their own organization's tickets only — the same isolation applies to the REST API and the MCP server.
Copy the data volume (the SQLite file, the RAG store and uploaded attachments). To restore, put it back and start the binary. You can also export everything to JSON/CSV/XML/Markdown from the Data screen.
The software is open source and free to self-host. Your only costs are the server you run it on and — if you enable AI — whatever your chosen LLM provider charges.
Clone it, run one command, and you have a complete ticketing and knowledge platform on your own infrastructure.
Live demo login: visitor@smartticket.local / DemoPass123!