Overseer
AI agents

Agents that read your estate and never touch it.

Give a model a role, point it at your own data through the same tools and permission checks the rest of Overseer uses, and let it finish by proposing — on your hardware or on a frontier model, bounded on the card, watched step by step.

How a run works Documentation Off until you switch it on.
The AI agents page showing agents disabled, their granted capabilities, and the bound on a run.
The agents board — off by default, with each capability named and each run’s bound printed on the card.
How a run works

Six steps, each one a thing you can see

Ordered the way the questions arrive: what you allow, what you add, what starts it, what it knows before it starts, what it does, and what you decide.

  1. You grant capabilities onceReading the attention queue, writing notes on an incident, drafting a runbook, drafting customer-facing wording, probing a host. Each is its own switch, off until you turn it on, and it applies to every agent you ever add.
  2. You add an agent and give it a roleThe role is the job: investigator, triage, runbook drafter, status writer, documentarian, PIR writer. It takes a subset of what you granted, never more, and its brief — the standing instructions for that job — is written once and shown on the card.
  3. You page it — or a pipeline doesFrom an incident, with the objective the page suggests from the incident’s own gaps. Pipelines can fire runs unattended, on a schedule or on a monitor staying down — and every unattended run passes a flood guard, stays quiet about a subject it already handled, and only runs when there is new evidence since the last time.
  4. It starts with one briefing, not twenty readsOne call hands it the incident, its entities, what earlier agents established, the open hypotheses, the known errors and the recent timeline. The estate itself is a cached brief it already knows. It reads more only for what the briefing did not carry.
  5. It gathers evidence with your tools, and you watchOverseer records each tool call as it starts. You see the tool executing right now, what the last one returned, how long it took, how many steps it has left and how much of its daily token budget it has spent.
  6. It writes a draft and you decide, from wherever you areFindings, a hypothesis, a runbook, status wording, a proposed cause and resolution. All of it lands in a queue with Accept and Reject — in the console, and as buttons on the chat message that told you. Nothing reaches your records until you accept it.
Many hands, one queue

A roster, not a chat box

Sixteen agents on this estate, each a role with its own brief, hue and bounds. An incident can page several specialists at once — the hosts team rules the machine in or out while the network team blames the path — and every one of them lands a draft on the same timeline. The eight below are illustrative fixtures.

InvestigatorClaude Code · opus · 25 steps

INC-20260826-M7DG

Invidious (VaporCloud, port 3001) container exited

Establish whether the container stopped deliberately or crashed; state what could not be established. Start with get_briefing.

  1. get_briefing 410 ms
  2. get_entity_confidence 220 ms
  3. run_probe 1300 ms
  4. propose_hypothesis 60 ms
  5. record_investigation 80 ms
PIR WriterClaude Code · sonnet · 12 steps

INC-20260826-7K3Y

Invidious down — coverage and blast radius unconfirmed

Resolved without a post-incident review. Draft the review from the timeline; name what the handling missed.

  1. get_briefing 380 ms
  2. get_incident_context 240 ms
  3. record_investigation 90 ms
Hardware TeamClaude Code · opus · 25 steps

INC-20260822-QA2M

PKVault Drop unreachable to external checks

Paged specialist for hosts and rack. Rule the host in or out before anyone blames the service.

  1. get_briefing 400 ms
  2. get_update_posture 90 ms
  3. run_probe 1100 ms
  4. add_incident_note 70 ms
Network TeamClaude Code · opus · 25 steps

INC-20260822-QA2M

PKVault Drop unreachable to external checks

Paged specialist for network. A check failing from one carrier only is a path fault.

  1. get_briefing 390 ms
  2. get_incident_impact 150 ms
  3. propose_hypothesis 60 ms
  4. record_investigation 80 ms
Impact AssessorClaude Code · opus · 16 steps

INC-20260821-M136

Kiwix unreachable

Impact has not been stated. Map the blast radius from the graph and say who outside can tell.

  1. get_briefing 420 ms
  2. get_incident_impact 180 ms
  3. add_incident_note 70 ms
DocumentarianClaude Code · sonnet · 12 steps

INC-20260822-EXM0

Home Assistant internal TCP check down

The service this touched has no page. Draft one from what the incident established.

  1. get_briefing 400 ms
  2. list_undocumented 120 ms
  3. draft_documentation 95 ms
Problem AnalystClaude Code · opus · 25 steps

INC-20260821-CRHA

Kiwix unreachable (4th in 3 days)

This keeps happening. Decide whether it is one fault or several, and draft the problem record.

  1. get_briefing 410 ms
  2. get_known_errors 130 ms
  3. get_entity_confidence 200 ms
  4. propose_hypothesis 60 ms
Response TeamClaude Code · opus · 25 steps

INC-20260821-TNR3

Flaresolverr state unverified on VaporGet

Paged specialist for incidents and actions. If exactly one allowlisted action fits, propose it — never run it.

  1. get_briefing 400 ms
  2. run_probe 1200 ms
  3. record_investigation 85 ms
What you can grant

Eight switches, each off until you flip it

A capability is a set of tools, and a tool is the only way an agent touches anything. There is no tool that resolves, publishes or pages — so there is no capability that could.

ReadThe attention queue, incidents and their context, entity confidence, inventory search, update posture, known errors, runbook suggestions. Every agent gets this and nothing else by default.
InvestigateFile an investigation report, add a timeline note, propose a hypothesis — all as drafts on the incident, none as decisions.
Probe a hostRead one fact from a host through a forced-command wrapper: a container state, a unit status, a file. Never a shell.
Draft runbooksPropose a runbook from what it found; you review it before it exists.
Draft status wordingCustomer-facing words for the status page, queued for approval, never published.
DocumentList what is undocumented and draft a page for it. Drafts land in a trash-safe queue, not in your vault.
Hand overMark an incident ready for a person or a team. It cannot page; it can only say it is done.
Propose resolutionA cause, a closure code and a resolution summary — proposed, so the record closes with your signature, not its own.
Where it runs

The same role runs anywhere you can point it

Where the model runs is a setting on the agent, not a different product and not a decision you make once for the whole estate. Run a documentarian locally and an investigator on a frontier model, if that is the trade you want.

On your own hardware

Ollama

Point Overseer at an Ollama server you already run and choose a model it has pulled. Nothing leaves your network, nothing is metered per token, and the estate data an agent reads never touches anybody else’s machine. This is the default, and the reason the feature exists in a self-hosted tool at all.

On a frontier model

Anthropic API key

For the work a small local model genuinely struggles with — long chains of evidence, ambiguous causes, anything needing real judgement. The key lives in an environment variable and Overseer reads it at run time without being able to show it back to you. What the agent reads leaves your network, and the card says so every time.

On the subscription you already pay for

Claude Code

If you already have Claude Code, an agent can run on it instead of buying API credits separately. A small runner stays on your host holding the login, because the Overseer container may be exposed to the internet and your subscription credentials should never be. It reaches your tools back through Overseer under a token you mint and can revoke — with the host’s own shell, files and web tools disallowed.

What stops it

The limits are the feature

Every tool in this space now claims AI, which tells you nothing. The question worth asking is what it is able to do when it is wrong — and that is a question about boundaries, so these are Overseer’s.

01

It can read everything and change nothing

There is no tool that resolves an incident, publishes a status update, writes to your documentation or pages anybody. The most an agent can do is produce a draft and mark it for your attention. That is a property of the tools it is handed, not an instruction it has been asked to obey.

02

An agent can be given less than you allow, never more

Your grants are the ceiling and each agent narrows them again. A hosted agent reaches its tools through your own endpoint under a token with its own role, so the boundary is checked on the server on every call — rather than living in a prompt the model might talk itself out of.

03

Every run is bounded, and the bound is on the card

A run stops after a set number of steps or a set amount of time, whichever comes first; a summariser gets fewer steps than an investigator, and every agent has a daily token budget it cannot exceed. The numbers are on the card, beside the run you are watching.

04

It has to say what it could not establish

Agents separate what the evidence shows from what it does not, and state their unknowns rather than round them away. An investigation that quietly asserts a cause is worse than no investigation, because somebody will act on it.

05

It is handed the same honesty you see

For any one service it can ask exactly what the pages tell you: whether its death would be detected, whether its green checks are credible, whether the catalogue and the runtime disagree, whether this keeps happening — and, for a host, what patches are outstanding.

06

Overseer is complete without any of this

Inventory, monitoring, incidents, backups, patching and the graph involve no model and never have. The agent surface is off until you switch it on, and switching it back off leaves you a tool that was never waiting on one.

The board

Off by default, and it says so

This is the state a fresh install is in: the endpoint switch unset, no capability granted, and an agent that will refuse rather than half-work. An empty queue and a switched-off subsystem look identical unless the interface is explicit, and only one of them is worth acting on.