The verified work layer. Grade every AI in your company — including the ones you bought — against what your own team actually does. Then let the proven ones work, and pay only for the actions that stood.
▸ Open the live demo · demo@northwind.dev / tacit-demo
Every company now pays two or three AI vendors and cannot tell whether any of them did the job right. "Resolved" means the conversation ended. It does not mean it was correct.
Tacit has the only ground truth that matters: what your own people do. It learns the recurring jobs by watching, then uses that standard two ways — to grade the AI you already bought, and to earn the work itself, one job at a time.
Try it without installing anything: https://tacit-demo-km3d.onrender.com — the real product on a seeded company, signed in as a demo admin. Shell, filesystem and network tools are removed and no model credential is present, because anyone on the internet can drive it.
To run the full version:
git clone https://github.com/suncal/tacit && cd tacit
make setup && make demo # http://127.0.0.1:4800 · demo@northwind.dev / tacit-demoPython 3.12 + Node 22. No key required — there is a deterministic local brain so the whole harness runs
without a model. docker compose up --build also works.
Register an AI that acts in a system Tacit can see (Sierra, Intercom Fin, Copilot, a homegrown agent). Its actions arrive as ordinary events; the vendor is not involved and nothing on their side changes. Tacit grades each action against the standard it learned from your team, and reports the number no vendor publishes:
Fin (Intercom) — 52 actions, 48% needed a human afterwards. Billed $0.99 each → $1.91 per action that actually landed.
| Stage | What happens | How it gets there |
|---|---|---|
| candidate | a recurring pattern mined from history | POST /playbooks/mine |
| shadow | drafts silently; the owner's real reply scores each draft | you promote it — it costs nothing |
| propose | drafts land in an inbox with a change preview; a human approves each | trust ≥ 60% over ≥ 10 graded drafts (Wilson lower bound) |
| auto | acts alone, reversibly, within a budget | ≥ 10 approvals, ≤ 10% rejected, 0 undos |
Recommendations are computed, never applied. Demotion is recommended the same way. On auto, a trigger that doesn't resemble the pattern is escalated to a human anyway. When a draft misses, Tacit asks the owner one question and the answer becomes a rule that conditions every future draft.
Backtest replays the shadow engine over history you already have — "we would have handled 70% of last quarter" — before anything acts.
An action is billable only once a human approved it, or it ran on a job that had earned autonomy and nobody reversed it inside the dispute window. Reversed or refused work is credited permanently. Work a person drove themselves is never billed. Every line names the action, the job, and the reason.
Everyone measures the model. Nobody measures the person approving its actions — so an approval granted in two seconds on a four-hundred-word change counts exactly the same as one somebody read. Tacit knows what nobody else links together: who decided, how long they took, how much text they were shown, how confident the system was, and whether the thing they approved had to be reversed.
jonas@northwind.dev — started the quarter spending 20s on a decision, now spends 1.3s. 64% of their approvals were granted faster than the preview could be read.
The consequence is the part that matters. Tacit's trust ladder treats approvals as evidence that a job deserves autonomy, so rubber-stamped approvals would counterfeit that evidence — a decision that fails the attention test is excluded from promotion evidence, not merely reported. Jobs stop being promoted on signatures.
The index is one number from six parts you can argue with (attention, catching, calibration, independence, spread, stamina), each shown with its weight, and it will not read effective while a high-severity finding about the oversight itself is unresolved. The findings name the person and say what to do.
Enforceable since 2 August 2026. Tacit's audit log is append-only and sealed into a hash chain, so an altered or removed record is detectable by anyone holding an earlier root. One call produces the bundle: every system in scope, its autonomy level, the oversight that applies, approvals, refusals, escalations, reversals — including for the third-party agents you supervise, and the oversight-quality index that says whether that oversight was real.
make setup # uv venv + npm install
make demo # seeded demo org: 629 events, 5 mined jobs, 2 supervised vendors
make dev # api :4800 with reload, vite :5173 proxying /api
make test # 39 backend tests + typecheck
make migrate # alembic upgrade headPoint it at your own team (polling — no public URL, no tunnels):
export TACIT_GITHUB_REPOS=acme/api # or leave empty to use `gh auth token`
export TACIT_SLACK_CHANNELS=C0BILLING
export TACIT_ANTHROPIC_API_KEY=sk-… # optional; without it the local brain runsFeed anything else through the event API:
curl -X POST localhost:4800/api/v1/events -H 'Content-Type: application/json' \
-d '{"system":"zendesk","kind":"message","actor":"priya","text":"…","thread_key":"zd:1234"}'| provider | how | when |
|---|---|---|
anthropic |
TACIT_ANTHROPIC_API_KEY |
best — Claude Opus 5, native tool use, adaptive thinking |
claude-cli |
TACIT_BRAIN_PROVIDER=claude-cli |
uses the claude subscription you already have |
openai-compatible |
TACIT_BRAIN_BASE_URL |
Groq, OpenRouter, vLLM, anything |
local |
nothing | no model at all: drafts from your team's own past replies |
The harness — mining, shadow scoring, trust, approvals, budgets, undo, audit — behaves identically under all four.
- Permissions — every tool has a risk class (
read/write/exec). Rules map(principal, tool) → allow | ask | deny; denied tools are never offered to the model. - Transactions — every write records its inverse. Undo a run across systems in one click; the undo is audited too.
- Budgets — hard caps on writes/hour and $/day per principal, enforced before execution.
- Replay — re-run any recorded run against a new model with recorded tool results. A regression suite grown from production.
- Data — one SQLite or Postgres database on your infrastructure. Secrets are environment variables, never rows.
GET /api/v1/exportreturns everything.
api/tacit/core/mining.py events → candidate jobs (trigger signature, cadence, medoid reply, consistency)
api/tacit/core/shadow.py draft on trigger · score against the human's real action · confidence + escalation
api/tacit/core/trust.py Wilson lower bound · graduation and demotion recommendations
api/tacit/core/oversight.py grade third-party agents · rework detection · retroactive regrading
api/tacit/core/oversight_quality.py grade the reviewer · rubber-stamp detection · approval fatigue · the index
api/tacit/core/ledger.py verified-work accounting
api/tacit/core/compliance.py hash-chained audit · art. 12/14 evidence bundle
api/tacit/core/opportunity.py the Day-One report
api/tacit/core/agent.py brain → policy → budget → tool (transaction) → audit · pause/resume · undo
api/tacit/connectors/ github · slack · linear (poll) · mcp (stdio)
api/tacit/routers/ FastAPI · OpenAPI at /api/docs · cookie sessions + hashed API keys
web/ React 19 · TypeScript · Vite · Tailwind 4 · TanStack Query · Recharts
Oversight is free forever, self-hosted or not: unlimited supervised agents, shadow mode, backtests. Work is $0.30 per verified action — nothing else, and nothing for work a human took back. A compliance tier adds signed evidence exports, auditor roles and SSO.
Site source in docs/ · published at https://suncal.github.io/tacit
MIT licensed. Not affiliated with Intercom, Sierra, GitHub, Slack, Linear or Anthropic.
If this is useful to you, a ⭐ on the repo helps other people find it. Issues and pull requests are welcome.
Built by Priyankar "Sunny" Chakraborty · everbuiltstudio.com