Actualis

What actually ran.

Actualis reads the logs your coding agents already write, and turns them into clear answers about exposure, activity and cost. Nothing is instrumented, nothing is intercepted, nothing leaves the machine.

Local — runs on your machine Read-only — never writes to your logs No network — makes no outbound calls

AGPL-3.0 · macOS, Linux, Windows · Python standard library only

actualis — run summary
$ actualis --days 30

EXPOSURE
  20 critical credentials in agent context
  54 distinct secrets seen · oldest 37 days

ACTIVITY
  4,812 commands actually executed
     9 flagged for review

COST
  $418.22 across 6 projects
  cache hit rate 71% · $1.34 median per ticket

Illustrative output. Your figures come from your own logs.

What it answers

Three questions your agent logs can already answer

They are just not in a form you can read. Actualis does the reading.

Exposure 20 critical credentials

What secrets reached the model

API keys, tokens and service credentials that were pasted into a prompt, printed by a command, or read out of a file. Grouped by fingerprint, with first seen, last seen, how many times it was used, and which projects.

Activity 4,812 commands executed

What the agent actually did

Every shell command that really ran, not what was proposed. Destructive and network-reaching commands are surfaced separately, with the permission mode in force at the time and every denial recorded.

Cost $418 across 6 projects

What it cost, and where

Token spend by project, branch, model and ticket, with cache read and write priced separately. Subagent usage is attributed to the run that spawned it rather than lost in the total.

How it works

It reads what is already there

Claude Code and Codex both write a full transcript of every session to disk. Actualis parses those files where they already sit. There is no agent to install, no proxy to route through, no wrapper around your CLI, and nothing to configure before the first run.

It measures, it does not interfere

Actualis opens your transcripts read-only and never modifies them. It does not sit between you and your agent, cannot block a command, and cannot change a result. If it stopped running tomorrow, nothing about how you work would change.

It verifies the agent binary

Before trusting a transcript, Actualis checks the code signature of the agent that produced it against the expected publisher — Anthropic for Claude Code, OpenAI for Codex. A tampered or unsigned binary is reported as such rather than quietly accepted.

Every number can be traced

Any figure can be expanded to the records behind it. Ask --why of a finding and it shows the evidence; ask --explain of a metric and it shows the arithmetic, the rate applied, and what was excluded.

On your menu bar

A quiet instrument, until it isn't

The tray app watches in the background and stays out of the way. When a credential you have not seen before turns up in agent context, the mark takes an amber ring and you get one notification — once, per credential, never a backlog dumped at launch.

  • Native menu bar app for macOS, Linux and Windows
  • Reads the same local data as the CLI — no separate service
  • Report a bug or request a feature straight from the menu
Idlenothing exposed
Exposedcritical credential

State is carried by form as well as colour, so the mark still reads without it.

Private by construction

Your transcripts never leave your machine

This is not a policy commitment. It is a property of how the tool is built, and you can verify it yourself in an afternoon.

No network code at all

The CLI is written against the Python standard library and imports no HTTP client, no socket, no telemetry SDK. There is no account, no API key and no opt-out to find, because there is nothing to opt out of.

Secrets are handled as secrets

Detected credentials are fingerprinted, never stored in full and never printed. Shared output is redacted by default, and the share command shows you exactly what it will disclose before it writes anything.

Source you can actually read

Licensed AGPL-3.0. The whole CLI is a single auditable file with no third-party dependencies, so “read the source” is a real option rather than a formality.

Nothing is uploaded on your behalf

Bug reports carry the version and platform and nothing else. Your findings, transcripts and project names are yours to share deliberately or not at all.

Honest about limits

What Actualis cannot tell you

A measurement tool that overstates its reach is worse than none. These are the boundaries, stated plainly.

It only sees what the agent already logged
If a session was never written to disk, or the transcript was deleted or rotated away, Actualis has nothing to read. It reconstructs history from records that already exist; it does not create new ones.
Secret detection is pattern-based, so it will miss things
It recognises the shapes of well-known credentials — provider prefixes, key formats, structured tokens. A bespoke internal token with no distinguishing shape can pass unnoticed. Treat a clean report as “nothing matched”, not as “nothing is there”.
Cost depends on published rates, and models change
Spend is computed from the token counts in the transcript against published per-model rates. A model with no known rate is reported as unknown and excluded from the total rather than guessed at, so a total can be short — and it will say so when it is.
It supports Claude Code and Codex today
Those are the agents whose transcript formats are implemented. Other tools are not silently partially supported; they are simply not read.
It will not rotate, revoke or block anything
Actualis tells you a credential was exposed. Rotating it is your job, and deliberately so — a read-only tool cannot break your workflow, and that guarantee is worth more than the convenience of acting for you.

Contact

Get in touch

Questions about Actualis, licensing, or using it across a team. For anything that belongs in the open, the issue tracker is usually faster.

Support

Actualis is free, and stays free

No paid tier, no seat count, no telemetry pitch. If it found a credential before someone else did, you can put something behind the next release.