Self-hosted · AGPL-3.0 · Python + React

Modern helpdesk. Znuny/OTRS-compatible.

Tiqora is a clean-room reimplementation of a ticket system that speaks the OTRS / Znuny 6.0–7.3 database — with a first-class web UI, AI-assisted replies & summaries, and a path to run alongside your existing instance.

Still under active development. Production use is not yet recommended.

Built for teams leaving the Perl era

Same familiar ticket data model when you need it — a modern stack and UI when you work in it every day.

UI

Modern web UI

Agent workspace, admin console, and customer portal — a clear step up from classic OTRS/Znuny screens.

DB

OTRS/Znuny 6.0–7.3 DB compatible

Runtime schema profile adapts to peers from OTRS 6.0 through Znuny 7.3 on MariaDB/MySQL and PostgreSQL. Parallel operation on the same database is first-class. See matrix ↓

AI

AI-ready search & MCP

Fast ticket search via Meilisearch, plus an MCP server so AI agents use the same permission engine as humans.

AI agent assistance

Per-queue policies drive draft replies, ticket summaries, and optional autonomous auto-replies — with attachment & image analysis, PII masking before every LLM call, and a full audit log you can export to a PII-aware PDF. Bring your own OpenAI-compatible or Anthropic models.

GD

GDPR tooling

Customer anonymization, retention jobs, and audit trails — built into admin workflows.

Modern design

Dark and light themes, EN/DE i18n, compact cobalt design system — built for daily agent use.

λ

No Perl app stack

Python FastAPI backend, React frontend, Redis, Meilisearch. Clean-room code — not a Znuny fork.

P

Customer portal & KB

Self-service tickets and a Markdown knowledge base with agent editing and portal search.

Integration friendly

REST /api/v1, GenericInterface REST/SOAP compatibility, webhooks, and channel plugins (email, SMS, WhatsApp, CTI).

🔒

Modern authentication

Legacy password hashes, OIDC, LDAP/AD, Kerberos/SPNEGO with seamless re-auth, enforceable TOTP, and passkeys — feature-flagged as you need them.

Compatibility matrix

Supported peer databases for parallel operation. Preferred LTS: Znuny 6.5 or 7.3. Full details in docs/support-matrix.md.

Peer product Profile Parallel-op Notes
OTRS 6.0.x / Znuny 6.0 otrs-znuny-6.0 Yes Table groups (hardest adapter)
Znuny 6.1 – 6.4 znuny-6.16.4 Yes Optional mail OAuth / tables per minor
Znuny 6.5 znuny-6.5 Yes Baseline · preferred LTS
Znuny 7.0 – 7.3 znuny-7.07.3 Yes State/priority colour (7.0+); preferred 7.x LTS: 7.3
MariaDB / MySQL · full matrix PostgreSQL · schema matrix TiqoraSync 6.0.x–7.3.x Layer A + B golden validated

See it in action

Agent workspace, ticket zoom, reporting, admin, privacy tools, and portal.

Tiqora agent dashboard
Agent dashboard — open work, queues, and presence at a glance
AI assist panel with ticket summary and reply drafts
AI assist — state-only ticket summary and reviewable reply/clarification drafts, self-hosted
AI assist grounding a draft in live MCP monitoring-server results
AI assist + MCP — the draft is grounded in live results pulled from an MCP monitoring server (host metrics, active alerts)
Ticket zoom view
Ticket zoom with permission-aware actions
Queue view
Queue list with filters and bulk actions
Reporting and SLA
Reporting & SLA
Ticket search
Full-text ticket search
Admin queues
Admin — queues and configuration
GDPR tools
Privacy / GDPR erasure tooling
Customer portal
Customer portal
Knowledge base
Knowledge base editor

Three ways to run

Greenfield, side-by-side with Znuny, or a controlled migration path.

Fresh install

Empty database, bootstrap with tiqora bootstrap, and run Tiqora standalone.

Parallel to Znuny

Share one OTRS/Znuny 6.0–7.3 database. Additive tiqora_* tables only — no peer schema changes until you choose ownership.

Migrate away

Take over daemons feature-flag by feature-flag, then follow the cutover runbook when you are ready.

Python 3.12 · FastAPI React · TypeScript · Vite PostgreSQL / MariaDB Meilisearch Redis · taskiq Docker AGPL-3.0

Explore the interactive demo

Full agent, admin, and portal UI in your browser — mock data only, nothing is saved.