Open source · Self-hosted · Single-tenant

Your support desk and knowledge base — on your own infrastructure.

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!

No tracking service yet; this opens an email draft so launch traffic turns into a real reply.

$ git clone https://github.com/liliang-cn/smartticket && cd smartticket && docker compose up -d
1
static binary
<512MB
memory footprint
0
external services
SQLite
embedded database
100%
your data
https://support.your-company.com
Dashboard
Tickets
Knowledge
Customers
Access
AI Providers
workspace overview
128
Open tickets
96%
SLA met
2.4h
Avg. first reply
312
KB articles
Email notifications stopped after the upgradeurgentin SLA
How do I configure SSO with our provider?highin SLA
Export a customer's tickets to CSVnormalanswered
// at a glance

SmartTicket in one screen.

The essentials, stated plainly — for people and for the AI engines that summarize this page.

What it isOpen-source, self-hosted ticketing & knowledge base
ModelSingle-tenant — one instance per organization
LicenseMIT — free to self-host
StackGo 1.25 · React + TypeScript · SQLite
DeploymentOne static binary, or docker compose up
DependenciesNone — embedded SQLite; no DB, Redis or proxy required
AIBring-your-own OpenAI-compatible LLM + RAG (optional)
Footprint< 512 MB RAM; runs offline / air-gapped
// everything in one binary

A complete support stack, nothing to wire together.

Tickets, SLAs, a versioned knowledge base, role-based access, customer isolation and AI assistance — all built in, all running from a single process you own.

Full ticket lifecycle

Priority & severity, assignment, threaded conversations, attachments, status workflow and audit trail — from intake to resolution.

SLA tracking

Per-tier response and resolution targets, configurable support levels, and per-node / annual subscription tracking.

Knowledge base

Versioned articles with public / internal visibility controls, full-text and semantic search, and a clean read experience.

RBAC & customer isolation

Roles, granular permissions, and a service-layer actor model that scopes every customer to only their own tickets — REST and MCP alike.

Bring-your-own LLM + RAG

Any OpenAI-compatible provider for chat and embeddings — OpenAI, Azure, DeepSeek, Ollama, vLLM. RAG over your knowledge base, keys encrypted at rest.

In-app notifications

Replies, assignments and status changes surface as live in-app notifications — no email server required to stay in the loop.

Import / export

Export tickets, knowledge, users, products and services to JSON, CSV, XML or Markdown. Your data is portable by design.

White-label branding

Set your own product name, accent color and logo from a settings page — applied across the console and the sign-in screen.

MCP server built in

A Model Context Protocol server exposes tickets & replies as tools, so agents can triage and respond programmatically.

// download → run

Deploy your own instance in five minutes.

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/.
1Clone & run. One docker compose up brings up the whole app on port 6533.
2Sign in. Use the seeded admin account, then change the password immediately.
3Brand it. Set your name, color and logo under Settings.
4Connect AI (optional). Add an OpenAI-compatible chat + embedding provider under AI Providers.
data & backups

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.

// data sovereignty

Your data never leaves your server.

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.

  • Embedded SQLite — runs fully offline, air-gapped if you want.
  • LLM API keys encrypted at rest with AES-256-GCM.
  • Full export to open formats — no lock-in, ever.
single-tenant topology
┌─ your server ──────────────┐
│  smartticket (1 binary)    │
│   ├─ web console  :6533    │
│   ├─ REST API     :6533    │
│   ├─ MCP server   (stdio)  │
│   └─ SQLite + RAG (vol)    │
└────────────┬───────────────┘
             │ optional, you choose
        your LLM provider
// bring your own intelligence

AI assistance, on your terms.

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.

OpenAI Azure OpenAI DeepSeek Aliyun Bailian Ollama vLLM LocalAI …any OpenAI-compatible
retrieval-augmented answer
Q: How do I enable single sign-on for my team?
ANSWER · cited from 3 KB articles

Open Settings → Access, add your identity provider's metadata URL, map the email claim, then enable SSO enforcement for the team…

// engineered for operators

Built on a boring, reliable stack.

Go on the backend, React on the front, SQLite underneath. No exotic runtime, no per-seat licensing, no surprise dependencies.

Go 1.25· backend
GIN + GORM· API & ORM
SQLite· embedded (CGO-free)
React + TypeScript· console
Vite + Tailwind· build & styling
JWT + RBAC· auth
CortexDB· RAG vector store
Docker· one-command deploy
// questions

Frequently asked.

Do I need a database server or Redis?+

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.

How do I update to a new version?+

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.

Is AI required to use it?+

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.

Can customers see each other's tickets?+

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.

How do I back up my instance?+

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.

What does it cost?+

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.

// ready in five minutes

Own your support stack.

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!

Opens an email draft to the maker. No third-party list or analytics required.