Local-first AI code provenance

Git shows what changed. Tellur shows how AI participated.

Line-level attribution for AI-assisted code: which agent, which model, which session — sealed in a tamper-evident log that never leaves your machine unless you say so.

See it work

One command, one machine-wide setup. Free and open source — Apache-2.0 core.

Captures from Claude CodeCodexCursorVS CodeJetBrainsGemini CLIWindsurfAntigravityAiderCopilotDevin

Why teams record provenance

Three jobs, one quiet recorder.

Reviewer

Review with context

Know which lines an agent wrote — and with which model — before you approve the pull request.

Engineering lead

See the whole team

AI share, sessions, and review gaps across every repository, without asking anyone to change how they work.

Compliance

Prove it later

Tamper-evident evidence with SLSA and SPDX exports, ready for the audit you'll get next year.

01 · Install

Running before your coffee cools.

One command installs a checksum-verified CLI, deploys the editor packages it detects, and walks through the setup wizard. There is no per-repository step — repositories activate on first agent use.

zsh — ~/work
macOS / Linux curl --proto '=https' --tlsv1.2 -fsSL https://github.com/sydneyvb-nl/tellur/releases/latest/download/install.sh | bash
Windows irm https://github.com/sydneyvb-nl/tellur/releases/latest/download/install.ps1 | iex

02 · Capture

From keystroke to evidence.

Agents report through their own lifecycle hooks; editors capture saves. Tellur attributes the resulting lines — and hovering any line answers “who wrote this, and with what?”

src/auth.rs — tellur-demo

Explorer

src/lib.rs
src/auth.rs
src/limiter.rs
Cargo.toml

Agent session — Claude Code

You Add rate limiting to the login endpoint.
Claude Code · claude-sonnet-5 I'll check the limiter before the user lookup and return an error when attempts are exceeded.
Claude Code Done — 4 lines added to src/auth.rs.
Tellur: capturing saved · event sealed #1285 Rust · UTF-8
Step 1You ask, the agent starts a session.
Step 2The agent writes; hooks report every event.
Step 3On save, lines get a source. Hover to inspect.
Step 4Your edits stay yours — attribution follows.

03 · Provenance

Evidence nobody can quietly edit.

Every event is appended to a JSONL log and sealed into a SHA-256 hash chain. Try it yourself: tamper with one event and watch tellur verify catch it.

session.start
agent=claude-code model=claude-sonnet-5
prev genesis hash a3f19c
prompt.submit
prompt=sha256:9be1f0… (content not stored)
prev a3f19c hash 5d20e7
file.write
src/auth.rs +4 lines
prev 5d20e7 hash c471b2
policy.check
sensitive-paths: pass · review: required
prev c471b2 hash 08fe93
session.end
events=14 duration=6m12s
prev 08fe93 hash e6a4d1

04 · Team Hub

One control plane for every repo.

The optional self-hosted hub aggregates events and attribution during git push. Developers keep working locally; leads and auditors get the organization-wide picture.

hub.acme.dev/app/orgs/platform — Tellur Team Hub
acacme platform
Overview Repositories Sessions Policy Audit
AI-assisted lines 0%
Sessions this week 0
Review coverage 0%

AI share by repository

payments-api46%
web-frontend31%
infra22%
mobile12%

Recent activity

claude-codemira pushed 3 sessions · payments-api
codexjon pushed 1 session · web-frontend
cursorana pushed 2 sessions · infra
review gapPR #412 — 61 AI lines, no human review yet
exportSLSA provenance bundle ready · job #42
Step 1Attribution rolls up from every repo.
Step 2Sessions stream in on git push.
Step 3Review gaps surface before they ship.
Step 4Exports and audit history stay on tap.

SSO, SCIM & RBAC

OIDC login, SCIM-provisioned users and groups, org and per-repo roles.

Central policy

Distribute sensitive-path and review rules; developers pull them automatically.

Tamper-evident audit

The hub keeps its own hash-chained audit history of every change.

Audit-ready exports

SLSA v1.0 and SPDX 2.3 exports run as durable jobs, per repo or per org.

05 · In practice

What teams use it for.

01

PR risk reports

tellur pr-report combines changed-line attribution, model evidence, policy findings, and review coverage.

Reviewer
02

AI policy audits

Sensitive-path rules, review requirements, and central policy distribution — checked where the code is written.

Compliance
03

Incident forensics

Who wrote this line, in which session, from which prompt? Answer in seconds, months later.

On-call
04

Adoption insight

Which agents and models your team actually uses, and how much of the diff they produce.

Lead
05

Supply-chain evidence

Export SLSA v1.0 provenance, SPDX 2.3 AI annotations, and Git-notes authorship your tooling can consume.

Platform

Designed not to get in the way

Trust is the product.

local-first

Your code stays put

Capture and inspection work entirely offline. No account, no telemetry, no cloud dependency.

prompts hashed

Privacy by default

Prompt content is hashed, not stored. Secret-looking values are redacted before anything is persisted.

honest evidence

Unknown stays unknown

Missing evidence is never converted into “human-written”. Confidence and source are always recorded.

.tellur/disable

Opt out per repo

One file stops capture, note publication, and hub sync for a repository. No questions asked.

Get started

Ship AI-assisted code with receipts.

Install once, keep working the way you already do. Provenance accrues in the background — until the day you need it.

View on GitHub