Security update: v1.2.0 is the recommended release for everyone, including anyone already on v1.1.1. It closes eight authentication and authorization defects present in every version up to and including v1.1.1: MFA could be defeated with a password alone, signed-in users could read and write tickets they had no access to, API key and OAuth scopes were never enforced, and a credential could not be revoked. Upgrade now. Read the advisory →
Before you upgrade: Every API key and OAuth client created through the v1.1.1 admin UI stops working: it was saved with no scopes, and scopes are now enforced. Re-issue them with the scopes they need. Everyone is also signed out once, because sessions moved server-side. Upgrade notes →
Open source & self-hosted

Help desk software
you actually control

A modern, open-source ticketing system for support teams. Runs on your infrastructure. No SaaS fees, no data leaving your hands.

git clone https://github.com/PubliciaLLC/go-help-desk
cd go-help-desk/docker
cp .env.example .env      # set your secrets
docker compose up -d      # that's it

See it in action

A clean, focused UI built for support teams who move fast.

Everything a support team needs

From basic ticketing to enterprise SSO — all in one binary.

CTI Classification

Organize tickets with a three-level Category → Type → Item cascade, inspired by Remedy. Each level filters the next.

Ticket Lifecycle

Configurable statuses, a reopen window for resolved tickets, and automatic closure — so nothing falls through the cracks.

Roles & Groups

Admin, Staff, and User roles. Group-based staff scope tied to CTI categories — each team only sees what's theirs.

SSO & MFA

Local accounts with TOTP MFA, and SAML 2.0 for Okta, Azure AD, Google Workspace, and any standard IdP. Admins always keep local-auth access.

Linked Tickets

Connect tickets as related, parent/child, caused-by, or duplicate-of — across any status, including closed.

SLA Tracking

Optional SLA targets per priority and category. Track response and resolution times against your commitments.

Email & Webhooks

Notify users and staff on ticket events via SMTP. Fire outbound webhooks for integration with your existing tooling.

REST API & MCP

Full REST API with API key auth. Plus an MCP server so AI assistants can create and manage tickets as native tools.

Plugin System

Extend behavior with sandboxed WASM plugins. Hook into ticket events, add UI panels, and integrate external systems.

Canned Responses

Reusable reply templates scoped globally, by category, or by category and type — inserted into any reply with one click.

Full-Text Search

Relevance-ranked Postgres full-text search across subject and description, word-prefix matched as you type — no more guessing the exact substring.

Boring tech, on purpose

Chosen for correctness, performance, and longevity — not novelty.

Backend
Go
Frontend
React + Vite
Database
PostgreSQL
Deployment
Docker
✓ Single binary — frontend embedded via go:embed
✓ Automatic schema migrations on startup
✓ Type-safe SQL with sqlc — no ORM magic
✓ Graceful shutdown with connection draining
✓ Non-root Docker image (~20 MB runtime layer)
✓ Plugins sandboxed via WASM (wazero)

Where we're headed

Versioned milestones with clear scope — no feature creep.

v1 · Shipped

Core

  • ✓ CTI ticketing
  • ✓ SAML + MFA
  • ✓ Linked tickets
  • ✓ SLA tracking
  • ✓ Custom fields
  • ✓ REST API + MCP
  • ✓ Email + webhooks
  • ✓ Plugins (WASM)
  • ✓ Docker deploy
v2 · Now

Productivity

  • ✓ Canned responses
  • ✓ Full-text search
v3

Knowledge

  • Reporting
  • Knowledge base
  • Custom admin-defined roles
v4

Enterprise

  • Multi-tenancy
  • Plugin registry
  • ITSM ticket types
  • Impact × Urgency matrix

Ready to take back control?

Deploy in minutes. Your data, your server, your rules.