TRACE.
Enter the demo
OPEN SOURCE HELPDESK · MIT · v0.1

The helpdesk that resolves the ticket and shows you exactly how.

Email, chat, Slack and your own systems land in one inbox. An AI agent triages, researches and answers from your knowledge base. Every decision it makes is recorded as a trace you can audit, span by span.

Enter the demo Self-host it demo@trace.dev / password
TRY IT · NO SIGN-UP resets daily
Try the shared demo sample data · resets daily
Enter the demo
or run it yourself
$git clone github.com/ontrace-dev/trace
$docker compose --profile app up
→http://localhost:3000 · demo data seeded
SSO Passkeys 2FA

Built-in auth. Bring Google, GitHub, Microsoft or your SAML IdP.

AGENT
Claude, or offline heuristics without a key
KNOWLEDGE
Docs, Confluence, Jira, Notion, Zendesk HC
CHANNELS
Email, chat widget, Slack, Discord, REST
RUNS ON
Postgres + pgvector. One docker compose.
01 THE RECEIPT

Every answer comes with a receipt.

Open any ticket and see what the agent read, which tools it called, what it was allowed to do and why it sent what it sent. Not a summary. The actual spans, with timings and attributes.

trace/8f21c40a #4821 · “Charged twice for my March invoice” 10 spans · 3 model calls · 4.8s RESOLVED
SPAN 0ms2.4s4.8s RESULT TIME
  1. ticket.received email · de · from anna@kunde.de 0ms
  2. │triage intent=billing.refund · priority=high 412ms
  3. │knowledge.search 3 articles · “Duplicate charges” 180ms
  4. │tickets.similar 2 past resolutions, 94% match 96ms
  5. │tool.lookup_order order A-20931 · 2 charges of €49.00 310ms
  6. │model.turn plan: refund the duplicate charge 1.2s
  7. │tool.refund_charge €49.00 · approved by Mia R. 1.1s
  8. │model.turn draft reply · 3 citations · de 1.0s
  9. │policy.check auto-send allowed · confidence 0.93 40ms
  10. └reply.sent via email · thread #4821 320ms
model tool / system integration
02 WHAT IT DOES

A support team's worth of work, written down as it happens.

  • 02.1

    Answers first

    Triages on arrival: intent, language, priority, tags, sentiment. Researches your knowledge, past tickets and the customer profile, then drafts or sends a grounded reply with cited sources.

    triage research reply
  • 02.2

    Takes actions

    Looks up an order, refunds a charge, files a Jira bug. Anything with consequences waits for a human to approve it.

    lookup_order refund_charge jira.issue
  • 02.3

    Knows your docs

    Help articles plus synced sources, searched by meaning and keywords with local multilingual embeddings.

    Confluence Notion Jira Zendesk HC Files
  • 02.4

    One thread per customer

    Email via SMTP, forwarding or webhooks, an embeddable chat widget, Slack and Discord with two-way sync, and a REST API.

    email widget slack discord api
  • 02.5

    Built for teams

    Multi-tenant by design. Invite your team, set roles, and give every workspace its own channels, AI settings and branding.

    owner admin agent
  • 02.6

    Local first

    Postgres and Mailpit in docker-compose, no cloud account needed. Without an Anthropic key the agent runs on local heuristics.

    postgres pgvector mailpit
03 AUTOPILOT

Switch on autopilot after the tests pass, not before.

Policies decide what may auto-send and what waits for a person. Simulate any conversation against the real agent and run graded suites before you let it reply alone.

POLICY · billing v12 · edited by Mia
AUTO-SEND when │intent in [shipping.status, password.reset] │confidence ≥ 0.85 │sentiment > -0.4
ASK A HUMAN when │action = refund_charge and amount > €25 │customer.plan = enterprise
NEVER when │close a ticket tagged legal
SUITE · refunds-de · 24 cases ran 2m ago
  • Double charge, polite refund + reply 0.96
  • Double charge, angry, enterprise ask a human 0.94
  • Refund after 90 days decline, cite policy 0.91
  • Chargeback threat escalate to billing 0.58
  • Wrong currency on invoice reply with corrected PDF 0.89
  • Refund + cancel subscription two actions, approval 0.92
22 passed · 2 failed · 91.7% autopilot
04 CHANNELS

Wherever they write, it's one thread.

A customer emails, follows up in the chat widget, and your engineer chimes in from Slack. trace keeps it as one conversation with one trace.

  1. Anna Keller EMAIL 09:12

    I was charged twice for the March invoice. Can you check?

  2. Anna Keller WIDGET 09:31

    Following up here, the second charge is still pending on my card.

  3. trace AGENT 09:31

    Refund of €49.00 is waiting for approval. Sources: Duplicate charges, Refund policy.

  4. Mia R. SLACK · #billing 09:34

    Approved. Thanks for catching the duplicate.

  5. trace EMAIL 09:34

    Hi Anna, we refunded the duplicate charge of €49.00. It'll show on your card in 3–5 days.

  • Email SMTP · forwarding · inbound webhooks
  • Chat widget one script tag, your branding
  • Slack alerts · two-way thread sync · /trace
  • Discord intake channels · thread sync
  • REST API create tickets from your own systems
05 SELF-HOST

Your tickets stay on your server.

MIT licensed. Postgres with pgvector, a local embedding model, and Caddy for HTTPS. Point a domain at a small VPS and you're done.

  1. 01 Any VPS with Docker recommended Hetzner CX22 and up. Postgres, trace and Caddy with Let's Encrypt.
  2. 02 Coolify Compose build pack. Domain, HTTPS and secrets are generated for you.
  3. 03 Render + Supabase Free test deploy. Sleeps when idle, fine for clicking around.
zsh · ~/trace
$ git clone https://github.com/ontrace-dev/trace.git && cd trace
$ cp .env.prod.example .env
# set DOMAIN, POSTGRES_PASSWORD, BETTER_AUTH_SECRET
$ docker compose -f docker-compose.prod.yml up -d --build

✓ postgres (pgvector)   healthy
✓ trace                migrations applied · 0.4s
✓ caddy                certificate issued for support.acme.com
→ https://support.acme.com
TRACE/YOUR-FIRST-TICKET

Open the demo. Read the trace. Then decide.

No sign-up, no sales call. The shared workspace has real-looking tickets, AI drafts, a pending approval and a week of history.