See your AI spend, your AI activity, and the tools nobody approved. Govern access to all of it, behind your own firewall.
Your finance system knows what you were billed. Your security tools watch the network. Neither can tell you which AI your business is paying for, what it is being asked to do, or who approved it.
Token Observe puts your AI subscriptions, your API spend, your AI activity and your approved-tool list in one place — on your own infrastructure, behind your own firewall. See what you are paying for, what it is doing, and who is allowed to use it.
The longer answer, clause by clause
Token Observe keeps a register of every AI service and subscription your business uses, each with a named owner. It imports your invoices as JSON or CSV to record what was actually billed in each currency, and records metered token estimates separately — a charge and an estimate are different measurements, and adding them together produces a total that is true of nothing. It classifies what it sees as approved, prohibited, unknown or unobserved, so a paid subscription is never reported as unauthorised use and a disconnected source is reported as unknown rather than as zero. Where a configured integration exposes it, it records bounded, redacted prompts, replies and tool activity with truncation and source provenance. Operators reach all of it through one dashboard, REST API and MCP interface under team scoping, and the whole thing runs on your own infrastructure with your own provider keys.
A register of every AI service and subscription with a named owner, invoices imported as JSON or CSV for what was actually billed per currency, and metered token estimates recorded separately. A charge and an estimate are never added together. An import finds what the invoice lists, which is not necessarily every subscription you have.
Bounded, redacted prompts, replies and tool activity, with truncation and source provenance kept alongside them, wherever a configured integration exposes that content. Hidden chain of thought is not readable from any provider, so it is not recorded and not claimed.
Every observed service classified approved, prohibited, unknown or unobserved, reached through one dashboard, API and MCP interface under team scoping. An approved subscription is legitimate usage, never an unauthorised-use finding; a disconnected source is unknown rather than zero; and a hostname is not a verified employee identity.
Three systems already hold part of the answer. None of them holds this one.
Your finance system, your security tools and your identity provider each answer a different question. None of them answers this one.
Your finance system
knows what you were billed
and shows it as a line per vendor. It cannot tell you which team spent it, which of your AI subscriptions overlap, or what the metered API usage sitting beside them actually came to.
Your security tools
watch the network
and can tell you a hostname was reached. A hostname is not a verified employee identity, and a source nobody has connected yet reports no traffic — which reads as clean and means unknown.
Your identity provider
knows who works here
and which applications you federated. The AI tool somebody signed up for last month with a corporate card and a personal login is in none of those places.
What sits in the gap is one register: every AI service your business uses, what it actually cost, what it was asked to do, and whether anybody approved it.
See what it recordsEleven steps, in an order that is load-bearing.
Every request takes the same eleven steps. Here is what happens at each one, and why the order is part of the guarantee.
The eleven steps, and why the order is part of the guarantee
Every governed request follows the same path. The order is encoded in the evaluator rather than written down as a convention, because several of the guarantees depend on it: the trace opens before the decision, so a blocked request is still recorded.
- 01
Authenticate
The agent presents its gateway-minted key as a bearer token, or on x-api-key for the Anthropic dialect and x-goog-api-key for native Gemini. Token Observe takes the SHA-256 of what was presented, looks the key up by that digest, and re-compares the stored and computed digests in constant time.
- 02
Resolve the agent
Loads the agent record, its roles, the kill switches currently in force that select it, and its recent spend window. All four are read live from the store on every request: on this path there is no cached copy, no sync job and no propagation step. The one deliberate exception is elsewhere — the signed bundle a developer seat hook decides against, which is a snapshot by design and is bounded by a freshness window rather than read live.
- 03
Open the trace
A trace id is minted and its row written before anything can reject the request, and a metadata-only opening event is appended: the requested model, message and tool counts, tags, session id and the names of any forwarded headers. The id comes back on x-acp-trace-id on every outcome, blocked ones included, and on both vendors’ own request-id headers as well, so an SDK’s logging correlates with the flight recorder without being configured to.
- 04
Sanitise
All text content is normalised to a fixpoint — the loop repeats because removing one layer can reveal another — stripping the Unicode Tags block, zero-width characters, bidirectional embeddings, overrides and isolates, the invisible formatting characters, the supplementary private-use planes, and lone halves of a surrogate pair. Where anything is removed, a trace event records how many characters and which categories went — never the characters themselves.
- 05
Scan
The personal-data and secret detectors run over the prompt content, and a heuristic injection scan scores it. Content that arrived as a tool result is scored at 1.25 times, because the author of a tool result is data rather than a principal — a directive found there is indirect injection by definition, where the same words from the user might be a request. Both detectors are pattern-based, and their limits are published rather than implied: matching is regular expressions plus checksums, so a card number, an IBAN or an NHS number validates at high confidence while free-text personal data — a name, an address, a described condition — is not detected at all, and neither are identifier formats outside the UK and US shapes the detectors know. The injection heuristics are regular expressions too, so paraphrase, translation and encoding defeat them; the product’s own threat model records that as an accepted false-negative rate requiring a named person’s sign-off. Confidence scores are exposed so a policy can set its own threshold, and the honest description in the source is a compensating control rather than a complete data-loss-prevention system.
- 06
Govern
One function returns one verdict — allow, block or require approval — plus a redaction plan. Inside it the order is fixed and the first hard failure wins: engaged kill switches, then agent lifecycle status, then deny-by-default role checks including every link of an agent-to-agent delegation chain, then rate limits — the USD ceiling is deliberately deferred for any agent that has one configured, because money cannot be decided honestly until routing has fixed which upstream will actually serve the call — then the policies whose scope selects this subject, by priority, with block beating require-approval beating redact and warn.
- 6b
Intersect with the named human
When on-behalf-of enforcement is switched on, the roles mapped from the named principal’s identity-provider groups are appended as the last link of the delegation chain and run through the same delegated evaluator that agent-to-agent delegation uses — a function whose entire contract is that every link must allow. The intersection can therefore only narrow what step 6 allowed: a human whose group grants everything is a no-op rather than an escalation. Only one of the three settings actually refuses anything, and the threat model says so in as many words: off, the default, resolves no principal at all, and shadow resolves everything and records what it would have refused while letting the request through. An install that has not reached enforce should not describe the intersection as a mitigation it holds.
- 07
Enact
Shadow matches are recorded first, whatever the verdict. On block, a typed error goes back and the trace closes as blocked; on require-approval, an approval record bound to a hash of the request payload is created, an approval-requested event is published, and the caller receives a 403 carrying the approval id; on allow, the redaction plan is applied to the outbound payload and a redaction event records kinds and counts, never values.
- 08
Route
A concrete provider and model are resolved, honouring the agent’s data policy — zero data retention, no training on payloads and a required serving region are three independent constraints rather than one flag — with a typed fallback chain built behind the chosen target. For an agent under a budget, the primary target and every fallback still standing behind it are priced against the resolved model and provider kind rather than the name the caller typed; a reachable target with no active price row is refused with a 409 before egress; and the conservative estimate — each leg taken at the highest rate in the reachable candidate set — is tested against the hour, day and month windows and reserved in one per-agent transaction, so concurrent calls cannot each pass a ceiling one of them breaches.
- 09
Call upstream
One explicit timeout, at most two retries beyond the first attempt per provider with full-jitter exponential backoff from 250 ms capped at four seconds, an upstream Retry-After honoured up to a ten-second ceiling, and a per-provider circuit breaker. Failover is typed: a timeout, a rate limit and an upstream server error move to the next candidate in the chain, while a content-policy refusal, an authentication failure, an invalid request and an over-long context do not.
- 10
Govern the response
If the model proposes a tool call, that proposal is evaluated against tool-call policies before it is handed to the client. On a stream the frames are held per index until the arguments parse as complete JSON, governed, and only then released.
- 11
Meter and record
Provider usage is normalised into one shape whose cache buckets are mutually exclusive by construction, priced, written to the ledger, appended to the trace as events, and the trace is closed with a terminal status before webhook events are emitted.
Each step also has a reason for sitting exactly where it does, and on a governance product those reasons are the specification rather than the commentary.
Read the whole pathOne environment variable.
One environment variable, your own keys, and six providers under the same set of policies.
What changes in your stack, and what it costs to adopt
A base-URL change is the normal case for the OpenAI-compatible, Anthropic and Gemini dialects. Whether your own SDK and version behave that way is the first thing to check, and the first thing a proof of concept settles.
OPENAI_BASE_URL="https://tokenobserve.company.com/v1" # was https://api.openai.com/v1
ANTHROPIC_BASE_URL="https://tokenobserve.company.com" # was https://api.anthropic.comFrom that moment the agent has an identity, a budget, a permission set, and a searchable record of each governed request.
- OpenAI
- Chat Completions, Responses and embeddings
- Anthropic
- Messages, including the x-api-key dialect
- Google Gemini
- Native Gemini ingress
- OpenRouter
- With caller-controlled route selectors refused before egress
- Amazon Bedrock
- For estates that will not egress to a model vendor directly
- Azure OpenAI
- Deployment-name routing under the same policies
- Your own endpoint
- Any OpenAI-compatible endpoint you host
the same policies, redaction, budgets and tracing apply identically whichever one serves the request — a policy that fires on OpenAI but not on Gemini is worse than no policy
15 capabilities, one decision point.
Most estates need three or four of these and can defer the rest. The groups are the order the questions arrive in, not the order the code is organised in.
See the estate
AI spend and subscriptions
What you were billed and what you were metered, recorded as two numbers and never added into one.
Approved and unauthorised AI
Approved, prohibited, unknown — and unobserved kept separate from clean, because those two are not the same finding.
AI conversation evidence
What the AI was asked and what it returned, redacted before it is stored and bounded before it is kept.
Know and authorise
Decide and enforce
Policy engine
One deterministic verdict on every governed request: allow, block, redact, or park it for a human.
Human approvals
One human decision, bound to one exact payload, spendable once.
Spend controls
Hard USD ceilings, per-minute rate limits and a kill switch, all decided before the request leaves your network.
Route and prove
Model routing
Six upstreams behind one set of policies, and a fallback chain that will not launder a refusal.
Flight recorder
Every governed request in a timeline a compliance officer can read, and a search box that never writes SQL.
Audit chain
Every administrative act hash-chained; seal it under a key held off the box, and anchor it with a signature your auditor can check alone.
Reach further than the model call
MCP gateway
One endpoint in front of every upstream tool server, and the same evaluator deciding a tool call that decides a model call.
Effect contracts
The action leaves once, and success is what a second pinned tool observed.
Endpoint seats
Policy enforced inside each vendor’s own administrator hook, decided offline against a signed bundle, because a hook that phones home fails open.
Shadow AI radar
Five evidence sources for AI activity that never touched the gateway, and a coverage model that refuses to call a dead feed a clean estate.
All 15 arrive with the same base-URL change, and each one states what it will not do on its own page.
Open the platformEvidence that does not depend on this box being honest.
A record you can search in plain English, export, and hand to somebody who was not there.
How the chain and the exports actually work
Every governed request, tool call, result, token count and policy decision is written to a hash-chained log, searchable in plain English, and exportable as a digest-sealed evidence file carrying the chain’s own verdict. The chain can be anchored with an Ed25519 signature held outside the database that produced it, which is what turns “here is our audit log” into something a third party can check.
It is tamper-evident rather than tamper-proof, and the difference is stated on the page rather than left for a reviewer to discover.
Read the security pageThree properties a reviewer will ask about
- Searchable in plain English
- “Show all refunds over £200 approved by AI” is translated into a validated filter object, never into SQL, and the interpreted filter is shown back as editable chips. It degrades to a deterministic keyword parser when no model is configured, so search still works when the budget circuit breaker has tripped.
- Attributable reads
- Listing, searching, opening and exporting evidence are themselves recorded events, scoped to the reader’s team. An audit trail that nobody can be shown to have read is half an audit trail.
- Sealed, not signed
- An export carries a SHA-256 digest and the audit chain’s verdict. It is deliberately not described as signed: durable origin evidence comes from the keyed audit chain plus an anchor retained independently, and conflating the two would be the easiest overclaim on this page.
What Token Observe does not do.
What Token Observe does not do, so you can decide early whether any of it matters to you.
The published limitations, taken from the product's own list
Taken from the product’s own published limitations rather than written for this page. If you find something that is not on this list or on the security page, it is genuinely not known.
Token Observe has not had an independent penetration test.
No third-party security assessment, red-team engagement or code audit has been carried out on it. The security work done so far is internal: a five-dimension adversarial review with a three-verifier refutation panel per finding, a STRIDE threat model, targeted testing of specific attacks including a forged audit chain and adversarial ReDoS inputs, and the automated release gates. That is a genuine amount of work and it is not the same thing as an external test, so it is not presented as one. A pre-purchase penetration test by a prospective customer is welcome and expressly permitted by the licence.
There is no SOC 2, ISO 27001 or ISO/IEC 42001 certification.
None is held, none is in progress, and certification is deliberately not on the near-term roadmap. What exists instead is a control-by-control mapping to EU AI Act deployer articles, ISO/IEC 42001 Annex A, NIST AI RMF and the OWASP LLM and agentic lists, each framed as “this feature helps evidence that clause” rather than as compliance. A design-partner agreement can carry a contractual commitment, with a named date, to any certification milestone your procurement process requires.
The audit chain is tamper-evident, not tamper-proof.
Unkeyed is the default, and on a default install an operator with write access to the database file can rewrite an entry, recompute every downstream hash, and get valid: true. A test does exactly that, deliberately, so the limit is a tested fact. Keyed protection and off-box Ed25519 anchoring close most of it and both are off until you configure them; even then, key theft signs anything, history before the first anchor is covered by no anchor, a sink administered by the party that runs the database is not independent, and only an RFC 3161 authority or a public ledger proves when.
Evidence exports are digest-sealed, not signed.
A trace export and a compliance bundle carry a SHA-256 over the canonical JSON of the bundle and the embedded chain-verification verdict. That detects accidental or post-export edits; it does not prove origin. Durable origin evidence comes from authenticated delivery and, for the ledger head, from keyed audit plus an Ed25519 anchor retained independently of the database. WORM export, RFC 3161 timestamping and a Merkle tree for partial-log proofs are not built.
There is no availability service level and there are no service credits.
No uptime percentage is offered, and none should be accepted from any self-hosted vendor without asking what it could possibly mean. The vendor can commit to responding, to diagnosing and to fixing defects in the software; it cannot commit to the availability of your deployment, because it does not run it, cannot observe it and cannot restart it. There are no service credits because there is no service level to credit against, and there is no out-of-hours or 24/7 cover.
It is a single-writer SQLite process on one node, with no high availability, no point-in-time recovery and no proven recovery objectives.
There is no replica and no clustering by design at this scale, and no claim that process-local login throttles, connector buckets, OIDC transactions, provider circuit state or MCP sessions are safe to multiply across replicas. Recovery is from a retained full snapshot, not from point-in-time recovery. Recovery automation exists; a partner-proven recovery point or recovery time does not, and the twenty-four-hour and one-hour figures that appear in planning documents are unqualified planning objectives rather than evidence or commitments.
There is no throughput or capacity commitment.
The only published number is a thirty-second, mock-provider, single-laptop laboratory baseline, published with its own list of what it does not prove and an instruction not to turn it into a concurrency limit or a throughput commitment. No retained partner-shaped sustained-load result exists, and publishing a capacity figure before that would be a guess wearing a number.
There is no claim that the vendor is legally never a processor.
Runtime phone-home is zero and the published licence undertakes it, which removes the data processing agreement, sub-processor and transfer-assessment path from the ordinary supply of the software. It does not decide the legal roles created by evaluation terms, support access, incident handling or data you choose to share, and counsel must analyse those separately. Before sending a log excerpt or a diagnostic bundle, redact it; if it would contain personal data, execute a data processing agreement first.
Every capability page carries the same section for its own subject, and the security page names the residual risks that require a person to accept them in writing.
See what is not claimedOn your infrastructure, on your keys.
It runs on your infrastructure, on your keys. We receive nothing, and there is nothing to phone home.
The deployment shape, and the measured capacity baseline behind it
There is no hosted tier, no phone-home and no licence callback. That is a deliberate architectural position rather than a stage the product has not reached yet.
Self-hosted, bring-your-own-key
Node.js 24 LTS, or the published container image
SQLite in WAL mode, one file
A modular monolith: one process, one database, five surfaces
None. No phone-home, no product analytics, no vendor-side copy of your traces
Governed payloads leave your network only for the model and tool providers you configure, after policy and redaction
- p50 governed request
- 71ms
- p95 governed request
- 164ms
- throughput
- 206 requests/second
- storage per request
- 3.1 KB per completed request
30 seconds at concurrency 16, 6,216 requests, zero failures, on an Apple M1 Max with a mock upstream provider. Thirty seconds is not a soak, a mock upstream excludes provider latency and failover, and a fresh database does not model a partner-sized trace corpus. Treat it as evidence about the code path, not as a throughput commitment. the command that produces it ships in the repository: node scripts/bench.mjs --duration-seconds 30 --concurrency 16 --json
Four people have to agree, and they disagree about what matters.
Four people usually have to agree. Each of these pages answers the question that reader actually asks.
Security leadership
Six residual risks name you as the person who has to accept them, and all six are published before you ask.
You have not had a penetration test.
Platform engineering
One base URL changes. The fail-closed trade is the thing to decide before you change it.
If this is down, my agents stop. Why would I put it in the path?
Compliance and internal audit
Every mapping says this feature helps evidence that clause. None of them says installing it makes you compliant.
Who says the head you are showing me is the head you showed me last month?
Data protection
The retention default is keep forever, and that is a decision you have to make rather than one you can inherit.
Is your redaction sufficient?
Most of what you would compare this to is a different job.
Where another tool is the better fit, and where this one is.
Where each alternative is the better fit, and where this one is
6 category arguments and 22 head-to-head pages against named products. Each one includes a section on where the alternative genuinely wins, because pages that conclude “choose us” every time are not read as comparisons. Vendor capabilities are as those vendors publish them and have not been independently tested.
LLM gateways
Token Observe is a gateway in delivery. The gateway is how it arrives, not what it is for.
Kong AI Gateway · Envoy AI Gateway · Portkey · LiteLLM
LLM observability
One refuses the call inline. The other scores it afterwards. Most estates need both, and they are not substitutes.
LangSmith · Langfuse · Arize · Datadog LLM Observability
AI security platforms
Token Observe is not a complete AI security suite, and the product’s own strategy document forbids selling it as one.
Palo Alto Prisma AIRS · Cisco AI Defense · Zenity · Noma
cloud-native controls
If every agent, model and tool lives in one cloud, use that cloud’s controls. The argument here is for the estate that does not.
Amazon Bedrock AgentCore (Cedar authorisation) · Microsoft Entra Agent ID · Microsoft Agent 365 · Google agent IAM
building it yourself
For a small estate, a few hundred lines of proxy is usually the right answer. The cost arrives later, and it arrives in specific places.
LiteLLM · Envoy · NGINX · Open Policy Agent
doing nothing
With three agents, no regulated data and no incident, doing nothing is often the correct decision. This page is about what changes it.
Most of this site is reference, not argument.
If you arrived from a definitional search you are not in the wrong place. These are the parts written to be useful on their own terms, and they are the majority of the site by word count.
Glossary
What the words in this field actually mean, with the confusions resolved: tamper-evident against tamper-proof, sealed against signed, prompt injection against the indirect kind. No definition on it mentions the product.
Guides
How this class of problem is actually solved, at length, by somebody who has had to. Written to be useful to a reader who never buys anything.
By the job
Organised by what you are trying to stop happening rather than by what the product has. Every one ends on what it still does not solve.
Read it. Run it. Attack it.
Source-available, with thirty days to evaluate it and no restriction on what you publish about it.
What the licence permits, and what it does not
Commercial source-available, which is the harder of the two available words and the accurate one. The governance domain is pure functions with zero runtime dependencies, so what allow, block, approve and delegate actually mean can be read in a day without standing up any infrastructure — and security research, including publication of what you find, is expressly permitted.
The published licence is a template pending review by counsel rather than legal advice, and the final terms are the ones in your signed agreement.
- Use, modify and self-host under a licence
- Read the entire governance domain before buying: the core package is pure functions with zero runtime dependencies
- Security research, and publication of the results, with no gag clause and no pre-approval
- Redistribution
- Offering Token Observe as a competing hosted service
Prefer to ask a person? Write to us →
Questions people ask before a first email
The full set, grouped by what you are trying to find out, is on the questions page.
What is Token Observe?
Token Observe is a customer-hosted platform for SMBs and mid-market businesses that answers four questions about the AI your organisation uses: what it costs, what it is being asked to do, which tools nobody approved, and who may use any of it. It keeps a register of your AI services and subscriptions, each with a named owner. It imports invoices as JSON or CSV to record what was actually billed in each currency, and records metered token estimates separately — a charge and an estimate are different measurements, and adding them together produces a total that is true of nothing. It classifies what it observes as approved, prohibited, unknown or unobserved, so an approved paid subscription is never reported as unauthorised use and a source nobody has connected is reported as unknown rather than as zero usage. Where a configured integration exposes the content, it records bounded, redacted prompts, replies and tool activity with truncation and source provenance kept beside them; hidden chain of thought is not readable from any provider and is not claimed. Operators reach all of it through one dashboard, REST API and MCP interface under team scoping. It runs on your own infrastructure behind your own firewall, model requests go to your own provider accounts on your own keys, and the vendor receives no prompts, keys, telemetry or trace data. The inline governance capabilities — permissions, budgets, redaction, approvals and a hash-chained audit log — still ship and are described across the platform pages; since the product direction was updated on 6 September 2026 they are retained capabilities rather than the headline.
What is Token Observe not?
Token Observe is not a FinOps suite for your whole cloud bill: it covers AI services, subscriptions and model traffic, and nothing else. It does not discover every subscription by itself — an invoice import finds what the invoice lists — and it does not read hidden chain of thought, because no provider exposes it. It is not an LLM evaluation platform, not an identity provider, not a sandbox or durable agent runtime, not a CMDB-style AI inventory, not a general AI firewall or prompt scanner, not a static agent-BOM scanner, and not an agent marketplace. Those are named strategic non-goals in Token Observe’s own roadmap, and the instruction that follows them is to build adapters and evidence exchange for those layers instead — so the recorded strategy is to federate your identity system, consume your security platform’s verdicts, and run above or beside your existing gateway rather than ask you to remove any of them. It does ship a registry, provider routing, quotas, cost dashboards, prompt and response redaction, trace trees and MCP tool ACLs. Every one of those is treated as table stakes rather than as a reason to buy, because most of the market now ships them too.
How does Token Observe work out what our AI actually costs?
Two separate measurements, kept separate on purpose. The first is what you were actually billed: you register each AI service and subscription with a named owner, then import the invoices as JSON or CSV. Charges are recorded per currency and carry their source and the period they cover, and repeated imports are replay-protected so loading the same invoice twice does not double the total. The second is metered usage through the gateway, priced as a token-cost estimate. Those two numbers are never added together, because an invoice and an estimate measure different things and a combined figure would be true of nothing — a subscription you are billed for monthly and the API traffic beside it are not the same money, and presenting them as one number is the fastest way to produce a total nobody can reconcile against a real vendor record. Two limits matter before you plan around it. An import finds what the invoice lists, so it does not by itself discover a subscription nobody has told you about or expensed elsewhere. And live billing adapters that reconcile continuously against real vendor records are not built yet — what ships today is the register, the import path and the provenance on both sides of it.
Is Token Observe the same product as AgentControl Plane?
Yes. AgentControl Plane is the engineering name Token Observe is developed under: it is the name on the repository, the licence, the architecture decision records and the threat model, so anyone who has read the source will search for it. Token Observe is the product name and is the only name used everywhere else, because two names in the copy split one entity into two half-described ones. Nothing else differs — same code, same source-available licence, same self-hosted deployment, same published defect list. If you arrived from the repository, the documents you have already read remain the authority: the data-flow document, the threat model, the compliance mappings and the known-issues list are what a security review should actually run on, and this site paraphrases them rather than replacing them. Where the two disagree, the repository is right and the site is a defect.
How does an agent start routing through Token Observe?
An agent normally starts routing through Token Observe by changing one environment variable. For the supported OpenAI-compatible, Anthropic and Gemini ingress, pointing OPENAI_BASE_URL or ANTHROPIC_BASE_URL at your Token Observe host is a base-URL change rather than an application refactor, and from that moment the agent has an identity, a permission set, a budget and a searchable record of each governed request. The ingress surface is explicit rather than implied: /v1/chat/completions, /v1/responses, /v1/messages, /v1/embeddings, the native Gemini generateContent and streamGenerateContent paths, /v1/models filtered to what that agent may reach, and /mcp over Streamable HTTP. Whether your own SDK and version behave that way is the first thing a proof of concept settles, and it is the honest limit on the claim. The offline path needs no provider key at all, because a built-in mock provider answers — but it fabricates text, so it proves the plumbing and nothing else.
What happens to our agents if Token Observe is down?
If Token Observe is unavailable, the agents it governs stop calling models, and that is the design rather than a defect. Governance is inline and fails closed: the evaluator returns allow only when every gate passes, and missing, unresolvable or erroring state denies the request. A control you can bypass by turning it off is not a control — which makes Token Observe’s own availability a governance property of your environment rather than somebody else’s problem. Plan for it explicitly: run it close to the agents, watch /readyz, and decide in advance what you do if it stops, because the design-partner gate requires that emergency decision to be named and owned before traffic arrives. Two related behaviours: process admission is global and applied before the body is read, returning 503 ACP_OVERLOADED with a Retry-After when the ceiling is reached, while health, readiness and metrics probes stay reachable.
Does the vendor see our prompts?
No. Token Observe is self-hosted and bring-your-own-key: there is no telemetry, no phone-home, no licence callback and no vendor-operated component in the path, and the licence carries that as a contractual undertaking rather than only a claim. Governed payloads leave your network only for the model and tool providers you configure, after policy and redaction. You do not have to take it on trust, and the check takes about five minutes: list every outbound call site and every hard-coded URL in the server and core packages, confirm each destination comes from operator-supplied configuration bar the admin-invoked price catalogue, check the dependency list, then run the process with egress allowed only to your providers and watch nothing break. Two qualifications belong beside that. Anything you voluntarily send in a support ticket is governed by your support agreement, not by the architecture. And whether the vendor is legally never a processor is counsel’s analysis, not an engineering fact.
How is Token Observe licensed?
Token Observe is published under a commercial source-available licence, version 1.0, from Tenhaw Ltd, registered in England and Wales and governed by the laws of England and Wales. Source-available rather than open source, and the harder of the two words is the accurate one. The rights below run for the subscription term of an order form stating the fees and the permitted scope of use; without one, a thirty-day evaluation grant applies instead. You may install, host and operate it on infrastructure you control; read, compile and modify the source and create derivative works for internal purposes, including to integrate it and to remediate defects; keep backup, disaster-recovery, development, testing, staging and training copies; and have contractors exercise those rights for you. You own the modifications you make and need not disclose them. You may not redistribute it, or provide it or a substantial part of its functionality to a third party as a hosted, managed or white-labelled service. Security research and publication of the results are expressly permitted. One caveat travels with all of it: the published licence is a template pending review by counsel, not an executed grant of rights.
Tell us what your agents are allowed to do.
Write to hello@tenhaw.com with what your agents do, which providers they call and what would have to be true for you to put something in front of them. James Rooney replies. You will get a straight answer about whether Token Observe fits, including when it does not.
no form · no qualification step · no sales desk · the other three ways in