AI · Bring Your Own Model

AI that runs on your hardware

Natural-language search, ticket generation, duplicate detection, translation and an assistant that proposes rather than acts — running against Anthropic and Gemini, or against Ollama on the box next door. Governed by tiers, budgets, rate limits and a full cost ledger.

Included

Every feature, at every tier

  • Natural language → TQL, parser-validated
  • Six ticket-content suggestion modes
  • Ticket generation constrained to your real vocabulary
  • Duplicate detection with confidence scores
  • Translation, templates, reports, sub-ticket break-down
  • An assistant chat with six intents
You control

Provider, model, budget, audience

  • Three cloud providers, fourteen self-hosted endpoints
  • CHEAP / STD / SMART tiers mapped per organisation
  • Per-feature model overrides
  • Token or USD budgets with a pre-flight check
  • A role allow-list, per organisation
Deliberately not

It does not act unsupervised

  • Duplicate detection never merges by itself
  • Every mutating assistant intent returns a proposal
  • Confirmation is a single-use token, valid 5 minutes
  • Bulk edit previews as a diff before it runs
  • AI is off for anyone outside the allow-list
AI feature
In Trakr Behaviour What actually happens
Default tier CHEAP · STD · SMART
Natural-language search
English in, TQL out — parsed and validated before it runs, with people-aware repair
CHEAP
Ticket content suggestions
Six modes — WRITE, REFORMAT, REWRITE, STRUCTURE, IMPROVE and QA, which asks clarifying questions instead of inventing answers
CHEAP
Translation
Source language detected automatically; HTML tags preserved through the round trip and re-sanitized on the way back in
CHEAP
Content generation
Free-form prose for descriptions, comment drafts and thread summaries
STD
Ticket generation from a prompt
Summary, description, type, priority, labels, components and a matched assignee — constrained to the organisation's real types, priorities and members. Default 5 tickets, maximum 998
STD
Template generation
Up to 20 reusable ticket templates in one pass
STD
Duplicate detection
Proposes merge groups with a survivor, the absorbed tickets, a reason and a confidence score. A ticket can appear in at most one group and never on both sides. Only 600 characters of each description are sent. It never merges
STD
Assistant chat
Six intents — reply, search, create_tickets, bulk_edit, comment, log_work. Read-only intents run immediately; every mutating intent returns an editable proposal confirmed with a single-use 5-minute token
STD
AI bulk edit
Preview first, execute second — a diff-style view of what would change before anything is written
STD
Break down into sub-tickets
Proposes sub-tickets in an editable workspace; the ones you select are created and linked back to the parent
STD
Report generation
Generates a report and then refines it conversationally
SMART
Project-context generation
Scans the shallow tree, build manifests and README, then describes stack, architecture and conventions as a baseline context block
SMART
Coding-ticket validation
Judges whether a ticket is ready for an agent — see the coding agent
STD
Component suggestions
Offered inside the eight-step project creation wizard
CHEAP
Note Tiers are logical, not fixed models — each organisation maps CHEAP, STD and SMART to a concrete provider and model of its choosing.
01 / Sovereignty

Your tickets never have to leave the building

Trakr speaks to three cloud providers and to fourteen self-hosted, OpenAI-compatible endpoints, each shipped with a sensible localhost default. Point an organisation's providers at a local runtime and the prompt path is a loopback address.

This is the difference between an AI feature you can put in front of a works council and one you have to disable. There is no vendor inference layer in the middle, because Trakr itself is the thing you are hosting.

02 / Governance

Three tiers, mapped by you

CHEAP, STD and SMART are logical names. Each organisation binds them to a concrete provider and model, and can override the mapping for any individual feature. Search on a 7B model running locally; report generation on a frontier model in the cloud; nothing about that combination is unusual.

With degrade-on-budget switched on, crossing 80% of the monthly budget drops every feature one tier automatically. CHEAP is the floor — the features keep working, they just get cheaper.

03 / Restraint

Proposals, not actions

Duplicate detection returns merge groups with a survivor, the absorbed tickets, a reason and a confidence score — validated so that a ticket can appear in at most one group and never as both survivor and absorbed. It does not merge anything. A human does.

The assistant is the same: read-only intents run immediately, every mutating intent comes back as a proposal you confirm with a single-use token that expires after five minutes, and the payload stays editable right up to execution.

04 / Accounting

Every call is a ledger row

Organisation, user, provider, feature key, input and output tokens, model, cost, request hash, cache flag, success and error — logged on every call. A price book holds input and output cost per million tokens for each provider and model, editable by superadmins.

Local and self-hosted providers are priced at zero, so a mixed estate reports honestly. Unpriced cloud models fall back to a configurable default. Dashboards exist at organisation and platform level, date-ranged, grouped by feature, model, organisation and user, exportable as PDF, CSV, JSON, XML or XLSX.

CloudAnthropicclaude-sonnet-4-6 default
CloudGeminigemini-pro
CloudOpenChatHosted endpoint
Self-hostedLM Studiolocalhost:1234
Self-hostedOllamalocalhost:11434
Self-hostedvLLMlocalhost:8000
Self-hostedJan AIlocalhost:1337
Self-hostedGPT4Alllocalhost:4891
Self-hostedLocalAIlocalhost:8080
Self-hostedllama.cpplocalhost:8080
Self-hostedKoboldCpplocalhost:5001
Self-hostedTGIlocalhost:8080
Self-hostedTabbylocalhost:5000
Self-hostedLiteLLMlocalhost:4000
Self-hostedRealMoonlocalhost:1338
Self-hostedtext-generation-webuilocalhost:5000
Self-hostedMstylocalhost:10002

Limits & circuit breaking

Applied before a request is ever sent
  • Per user, per minute 30 requests
  • Per user, per hour 200 requests
  • Per organisation, per minute 100 requests
  • Per organisation, per hour 1,000 requests
  • Circuit breaker opens after 5 consecutive failures
  • Breaker stays open 60 seconds
  • Response cache TTL 5 minutes
  • Cache hits cost Zero, logged separately
Budgets are enforced, not reported.
An organisation budget is set in tokens or in USD. A pre-flight cost check refuses a call that would breach it, rather than discovering the overrun at the end of the month. Budgets reset monthly and rate-limit records are cleaned up on a schedule.

Cost accounting & access

What is recorded, and who is allowed in
  • Logged per call Tokens in / out / total
  • Also logged Model, cost, request hash
  • Local & self-hosted models Priced at zero
  • Unpriced cloud models Configurable fallback
  • Price book editable by Superadmins
  • Dashboards Org & platform level
  • Export formats PDF · CSV · JSON · XML · XLSX
  • Default role allow-list MEMBER and above
An empty allow-list turns AI off entirely.
The list is drawn from VIEWER, CUSTOMER, CONTRIBUTOR, MEMBER, MANAGER, ADMIN and SUPERADMIN, and is set per organisation. Leaving it unset means MEMBER and above; setting it to nothing means nobody — which is a supported configuration, not an accident.

The six ingestion channels

Sources can be listed, previewed as the merged block, edited, enabled or disabled, reordered and deleted, with duplicate-content detection and a live size meter.

  1. The project's own context field. Free text, edited in project settings or in the creation wizard.
  2. Import from the bound repository. Trakr detects known instruction files and you pick which of them to import.
  3. Import from an external Git URL. URL plus ref, with an optional personal access token held in memory only — never persisted — SSRF-guarded, with a 20-second timeout.
  4. Document upload. Markdown or plain text only, stored in the database.
  5. Pasted text. With a label, for the things that live in someone's head rather than in a repository.
  6. AI-generated baseline. Scans the shallow tree, build manifests and README, then describes the stack, architecture and conventions.

Known-file registry, in import order: CLAUDE.md, CLAUDE.local.md, AGENTS.md, .cursorrules, .github/copilot-instructions.md, GEMINI.md, .windsurfrules, .clinerules, .aider.md, README.md, docs/ARCHITECTURE.md, CONTRIBUTING.md.

Background jobs — repository detection and import, URL detection and import, and generation — run one at a time per project and are pollable. Limits: 16,000 characters merged, 8,000 per source, 256 KB per import, 25 files.

Does my ticket data have to leave my network to use AI in Trakr?

No. Trakr supports fourteen self-hosted, OpenAI-compatible endpoints — LM Studio, Ollama, vLLM, Jan AI, GPT4All, LocalAI, llama.cpp, KoboldCpp, TGI, Tabby, LiteLLM, RealMoon, text-generation-webui and Msty — each with a default localhost base URL. Point an organisation's providers at those and no prompt leaves your infrastructure.

Cloud providers — Anthropic with claude-sonnet-4-6 as the default model, Gemini and OpenChat — are available, but they are never required, and the choice is made per organisation rather than for you.

Can the AI change tickets on its own?

No. Every mutating intent in the assistant chat returns a proposal that a human confirms with a single-use token valid for five minutes, and the payload stays editable at execution time.

Duplicate detection proposes merge groups — survivor, absorbed tickets, reason and confidence — and never merges anything itself. AI bulk edit shows a preview before it executes. Break-down proposes sub-tickets in an editable workspace and creates only the ones you select.

How do I stop AI spend from running away?

An organisation sets a budget in tokens or in USD, and a pre-flight cost check refuses any call that would breach it. With degrade-on-budget enabled, crossing 80% of the budget drops every feature one routing tier, with CHEAP as the floor.

Underneath that: 30 requests per minute and 200 per hour per user, 100 per minute and 1,000 per hour per organisation, a circuit breaker that opens after five consecutive failures and stays open for 60 seconds, and a five-minute response cache whose hits are logged separately at zero cost.

Which model does each feature use?

Trakr routes through three logical tiers — CHEAP, STD and SMART — that each organisation maps to a concrete provider and model, with a per-feature override available.

By default: search, content suggestions and translation run on CHEAP; generation, ticket generation, merge suggestion, template generation, the assistant, bulk edit and coding validation run on STD; project-context generation and report generation run on SMART.

Who is allowed to use AI features?

Each organisation keeps a role allow-list drawn from VIEWER, CUSTOMER, CONTRIBUTOR, MEMBER, MANAGER, ADMIN and SUPERADMIN. When it is left unset the default is MEMBER and above. An explicitly empty list turns AI off for everyone in that organisation — a supported configuration, not a bug.

What does the AI actually know about my project?

Whatever you give it. Baseline project context is assembled from six channels: the project's own context field, an import from the bound repository, an import from an external Git URL with an optional in-memory-only token, a Markdown or plain-text document upload, pasted text with a label, and an AI-generated baseline.

Repository imports recognise a registry of instruction files — CLAUDE.md, AGENTS.md, .cursorrules, .github/copilot-instructions.md, GEMINI.md, README.md and others — so the context an organisation already maintains for its coding tools is reused rather than rewritten.

AI you can actually switch on

Local models, enforced budgets, a role allow-list and a proposal step in front of every write. Self-hostable. Made in Belgium.