Seven git providers, a git server of Trakr's own, seven coding agents and a run pipeline that verifies commits were actually made before it pushes anything. Gated at tenant and organisation level, off until you decide otherwise.
Not a chat window next to your code. A queue, a lifecycle and a branch.
Everything works against a bound external forge. A few things only make sense when Trakr owns the repository.
GitHub, Gitea, Codeberg and Gogs reuse the Forgejo API shape; GitLab has its own adapter. Agents are configured per organisation with an encrypted API key, falling back to a host environment variable.
Agentic coding is easy to demo and hard to operate. These are the parts that make it survive contact with a real repository.
Between running the agent and pushing, the pipeline verifies that new commits were actually made. An agent that talks convincingly and writes nothing produces a failed run, not an empty branch and a hopeful pull request.
Runs are database queue rows, claimed by a worker polling every fifteen seconds under a sixty-minute lease and capped for concurrency. Each records the agent, branch, session id, cost, PR URL, error, attempt count, log URI and timings, alongside an event timeline of progress, file changes, test results, blockers and the final summary.
Any agent output line beginning BLOCKED: pauses the run and raises the question to a person. The handoff moves to BLOCKED, waits, and can be unblocked with an answer — resuming through the agent's own resume mechanism where one exists.
This is the difference between an agent that stops when it is uncertain and one that guesses. The lifecycle treats the first as normal behaviour.
No Mistral coding CLI exists, so Trakr implements the tool-calling loop directly — and having written it, it fences it in: path confinement inside the working directory, a command whitelist of git, mvn and ./mvnw only, an iteration cap of 40 and a hard deadline.
Claude Code's allowed tools default to read, edit, write and the same three command families. The default is not "full shell access and good luck".
Agentic coding is gated at tenant level and organisation level and is off by default; an organisation can only opt in once its tenant has. Organisation-level overrides exist for default agent, run timeout and budgets, and project values win over them.
The internal git server needs a platform kill-switch, a superadmin runtime toggle, the tenant flag and the organisation flag. Each provider carries a superadmin switch ANDed with an organisation switch. And any coding action additionally requires an AI-allowed role.
It goes through a handoff, and the handoff goes through validation.
The validation agent is a single model call that judges whether a ticket is ready. It returns an approval verdict, blocking issues, refined acceptance criteria, an estimated complexity of S, M, L or XL, and a list of suggested files — all persisted on the handoff, so the refinement conversation has somewhere to live.
Bound from the Git overview or from within a project: provider, server base URL, owner and repository, a personal access token verified before the binding is saved, and a base branch. Token and webhook secret are encrypted at rest.
Separate from the coding token, and deliberately so — the mirror only needs issue scope.
Inbound makes the remote the source of truth, which is what migrating onto Trakr looks like. Outbound makes Trakr the source of truth, which is what migrating off a forge looks like. Both — the default — is a genuine mirror.
Comments, labels and state each toggle independently, with configurable open- and closed-status mapping, a default ticket type for issues arriving from the remote, and a named account that mirrored writes are attributed to.
Issues carry a hash over the local field set — summary, description, open/closed state and label names — so a change that came back from the remote is recognised and dropped. Comments, being append-only, use per-comment origin link rows instead.
Triggers are poll (cursor-based, default fifteen minutes, so the remote is only asked for what changed), webhook (HMAC-verified), manual, a full import backfill, and Trakr-side ticket events dispatched after commit and executed asynchronously, so no user write is slowed down or rolled back by the mirror.
Seven: Trakr's own integrated git server, Forgejo, Gitea, GitHub including GitHub Enterprise, GitLab whether self-hosted or SaaS, Codeberg and Gogs. GitHub, Gitea, Codeberg and Gogs reuse the Forgejo API shape; GitLab has a standalone adapter.
No. Trakr hosts JGit-backed bare repositories on local disk and serves them over its own smart-HTTP endpoint. Provisioning, branches, tags, trees, files, diffs, commits, contributors, commit activity and repository metadata all run locally with no outbound HTTP.
Clone authentication uses a per-project token as the Basic-auth username, with the tenant, organisation and project path verified and a constant-time comparison. For integrated repositories, releases are first-class — a git tag, a database row and downloadable assets — and pull requests are stored records with their own per-project numbers.
The pipeline verifies that new commits were actually made before it pushes. End to end: create the branch through the git API, clone it locally, run the agent under a hard timeout, verify the commits exist, push, open a pull request with a title and body from the agent's summary, and optionally auto-merge once required checks pass.
Any agent output line beginning with BLOCKED: pauses the run and asks a human. The handoff moves to the BLOCKED state and can be unblocked with an answer, resuming through the agent's own resume mechanism where one exists. It is a state in the lifecycle, not a failure mode.
No. It is gated at tenant level and organisation level and is off by default — an organisation can only opt in once its tenant has. The internal git server additionally needs a platform kill-switch, a superadmin runtime toggle, and both the tenant and organisation flags. Every provider has a superadmin switch ANDed with an organisation switch, and a coding action also requires an AI-allowed role.
Yes. An in-app Monaco editor works over the ticket's agent branch: list changed files, view the diff, browse the tree, read a file in either its working or base version, edit it and commit back with base-SHA optimistic concurrency so two people cannot silently overwrite each other. The decrypted access token never leaves the service layer.
Git, agents, review and merge policy in one self-hosted system. Gated, budgeted and auditable. Made in Belgium.