Docs

Everything AgentMeter does, command by command. If it's your first time, agentmeter setup is all you need; come back here when you want to fine-tune something.

Install

You need Node.js 18 or newer and git. Reading Cursor or OpenCode needs Node 22.13 or newer, because they store their sessions in SQLite.

npm install -g https://agentmeter.si/cli/agentmeter.tgz

To update, run the same command. To check the version: agentmeter help. The CLI itself speaks Spanish for now; the reports and the client portal can be in English.

First steps

CommandWhat it does
agentmeter setupWizard: finds your projects and agents, creates agentmeter.config.json, your key and your account.
agentmeter demoCreates a sample project with made-up data so you can see a report without touching your work.
agentmeter doctorChecks Node, git, the configuration, the key, the agents it found and the connection to the server.

If you were invited, run it with your code: agentmeter setup --ref CODE. You get 30 days of Pro instead of 14.

Configuration

AgentMeter reads agentmeter.config.json in the folder where you run it, or the file you pass with --config. A full example:

{
  "author": "Andes Studio",
  "lang": "en",
  "idleMinutes": 15,
  "brand": {
    "color": "#5b45ff",
    "logo": "./logo.svg"
  },
  "privacy": {
    "hideCommitMessages": false,
    "hideAuthors": false,
    "redact": ["secret-project"]
  },
  "billing": {
    "currency": "USD",
    "mode": "none",
    "aiCost": "include",
    "aiMarkupPercent": 15,
    "taxPercent": 0,
    "dueDays": 15
  },
  "payment": {
    "methods": [
      { "type": "link", "label": "Pay by card", "url": "https://pay.example.com/acme" },
      { "type": "bank", "label": "Wire transfer", "details": "Example Bank · 000-123456" },
      { "type": "qr", "label": "QR code", "image": "./qr.png" }
    ]
  },
  "agents": { "claude": "~/.claude/projects", "cursor": false },
  "clients": [
    {
      "slug": "brightside",
      "name": "Brightside Labs Inc.",
      "paths": ["~/projects/brightside-app"],
      "junit": ["~/projects/brightside-app/reports/junit.xml"],
      "billing": { "mode": "hourly", "rate": 45 }
    },
    {
      "slug": "tienda",
      "name": "Tienda Andina S.R.L.",
      "lang": "es",
      "paths": ["~/projects/tienda-web"],
      "billing": { "currency": "BOB", "usdRate": 6.96, "mode": "fixed", "rate": 4500 }
    }
  ]
}
FieldWhat it's for
authorYour name or your agency's, as shown on the report.
langen or es. Report language. Each client can have its own.
idleMinutesMinutes without activity after which a session is cut when computing active time.
authorsGit emails, or lowercase names, whose commits count. Empty: every commit in the project.
hideSections you don't want to show: commits, tests, agents, cost, billing.
clientsOne block per client: slug, name, the project folders in paths, JUnit test reports in junit and, optionally, its own lang, billing and hide.
agentsWhere to look for each agent. A string or a list of folders replaces the default location; false turns it off.
pricingYour own prices per model, in USD per million tokens, for a model AgentMeter doesn't know. Example: {"my-model": {"input": 1, "output": 4, "cacheRead": 0.1}}.

Reports

agentmeter report --client brightside --period last-month --open
OptionWhat it does
--client slugThe client for the report. Not needed if you only have one.
--allOne report per client.
--periodthis-month (default), last-month, this-week, last-week, last-7, last-14, last-30 or a month like 2026-09.
--from and --toExact dates, YYYY-MM-DD.
--openOpens the report in your browser when done.
--dir folderWhere to save the file.
--lang enChanges the language for this report only. The client portal follows the report language.
--no-stampSigns the report without timestamping it. It doesn't count toward your plan.

The report is a single .html file that works offline. It carries the data, your signature and, if you timestamped it, the server's seal. Send it by email or chat like any other file.

Supported agents

AgentMeter reads the logs each agent already keeps on your machine. It doesn't install anything in them or intercept your traffic.

AgentKey in agentsWhere it looks
Claude Codeclaude~/.claude/projects
Codexcodex~/.codex/sessions or $CODEX_HOME/sessions
Gemini CLIgemini~/.gemini/tmp
Qwen Codeqwen~/.qwen/tmp
OpenCodeopencode~/.local/share/opencode or $OPENCODE_DATA_DIR
Copilot CLIcopilot~/.copilot/session-state or $COPILOT_HOME
Cline, Roo Code, Kilo CodeclineThe extension storage in VS Code, Cursor, Windsurf, VSCodium and Trae
CursorcursorThe Cursor user folder
Anything elsegeneric~/.agentmeter/logs, see generic format

AI cost is computed with each model's public prices (Claude, GPT, Gemini, GLM and others). If the agent reports its own cost and the model isn't in the table, that value is used. It's a reference estimate, not your provider's invoice.

Invoicing and brand

The billing block adds an invoice section to the report with total, taxes and due date.

FieldValues
modenone, fixed (flat amount), per-delivery or hourly (per active hour, rounded to 15 minutes).
rateThe flat, per-delivery or hourly amount, in your currency.
currency3-letter code: USD, EUR, BOB…
usdRateHow many units of your currency 1 USD is worth. Used to convert the AI cost.
aiCostinclude bills the AI cost as one more line; exclude doesn't bill it.
aiMarkupPercentMargin on top of the AI cost, as a percentage.
taxPercent, taxLabelTax and its name, for example 8.875 and Sales tax.
dueDays, notesDays to pay and a free-text note.

In payment.methods you list how you get paid: link (https links only), bank (text with your details) or qr (a PNG, JPG or WebP image). They are signed inside the report: if someone swaps your account for theirs, verification fails.

In brand you set your color (#RRGGBB) and your logo (PNG, JPG, WebP or SVG up to 150 KB; SVGs with scripts are rejected). They appear on the report and, on paid plans, on the portal.

Report privacy

On top of that, before signing, AgentMeter automatically removes anything that looks like a secret: Anthropic, OpenAI, GitHub, AWS, Stripe and Slack keys, JWT tokens, private keys, URLs with passwords and assignments like password=. The command summary tells you how many it found.

Verify a report

Anyone can check a report, no account needed: by dropping it on agentmeter.si or with the CLI.

agentmeter verify report.html --key 7FB9-4803-4C89-8F42 --online

Verification rebuilds the report from its data and compares it byte for byte with what you see, checks the issuer signature and, if it has a timestamp, the server signature. --key requires the issuer fingerprint to be the one you expect. --online also confirms that the timestamp is in the public log.

Timestamps and public log

The signature proves who made the report. The timestamp proves when it existed. When timestamping, the CLI sends only the report's SHA-256 fingerprint and your signature; the server writes it into a chained log, where each entry includes the fingerprint of the previous one, and signs it with its key. Nobody, not even AgentMeter, can insert or delete old entries without breaking the chain.

agentmeter audit

Downloads the full log and checks every link and every signature.

Client portal

With a paid plan you can publish a timestamped report on a private link. Your client opens it, reviews it, approves it or asks for changes, and lets you know when they paid. The portal is shown in the report's language.

CommandWhat it does
agentmeter publish report.htmlUploads the report and gives you the portal link.
agentmeter sharesYour portals, views, approvals and payment notices.
agentmeter paid <portal>Confirms you received the payment. Optional: --method and --reference.
agentmeter shares delete <portal>Deletes the portal and the report from the server. The timestamp stays in the public log.

Publishing does upload the report (not your code) so the client can see it. Anyone with the link can open it; share it only with your client.

Account and key

Your account is an Ed25519 key created on your machine. There's no user password on the server: you identify yourself by signing with your key.

CommandWhat it does
agentmeter register --name "..." --email ...Creates your account. setup does it for you.
agentmeter whoamiPlan, timestamps used this month and your referral link.
agentmeter email verify CODEConfirms your email with the 6-digit code we sent you. Until it is confirmed you can't timestamp or publish. agentmeter email resend sends a new one.
agentmeter keyShows your fingerprint, which is how your clients recognize you.
agentmeter key protectEncrypts your key with a password (scrypt and AES-256-GCM).
agentmeter key backup --out file.jsonExports an encrypted copy of your key.
agentmeter key import file.jsonRestores the key on another machine.

Make a backup. If you lose your key without a backup, nobody can recover it, AgentMeter included. You can create a new account, but it will have a different fingerprint.

Profile and domain

agentmeter profile --handle andes-studio --public --headline "Web development with agents"
agentmeter domain add andesstudio.com
agentmeter domain verify andesstudio.com

The public profile shows how many timestamped, approved and paid deliveries you have, at agentmeter.si/p/your-name, with a badge for your website. The domain is verified with a TXT record at _agentmeter.yourdomain.com. After that, your profile and portal show your verified domain next to your fingerprint.

Teams and dashboard

With the Agency plan (up to 5 people) or Enterprise, the owner invites the team and everyone shares the plan and domain.

CommandWhat it does
agentmeter teamMembers, seats and pending invites.
agentmeter team inviteCreates a single-use invite code, valid for 7 days.
agentmeter team join CODEJoins the team.
agentmeter team remove FINGERPRINT, leaveRemoves someone, or you leave.
agentmeter orgOpens the team dashboard: deliveries, AI cost and return by person, project, agent and model, with CSV export.

The dashboard only receives summary numbers from each timestamped report: project, period, commits, lines, tests, minutes, sessions, cost and models. Never code or messages.

Plans and payments

agentmeter upgrade --plan pro --open

Plans: pro, founder and agency. The secure Polar checkout opens and the plan activates within seconds. Polar acts as merchant of record: it issues the receipt and collects any applicable taxes. For the Enterprise plan, write to [email protected].

Environment variables

VariableWhat it's for
AGENTMETER_APIAnother AgentMeter server. Only https is accepted (or localhost for testing).
AGENTMETER_PASSPHRASEYour key password, to use it in scripts without a prompt.
AGENTMETER_NEW_PASSPHRASEThe new password when protecting or backing up the key in scripts.
AGENTMETER_HOMEBase folder for the generic format (default ~/.agentmeter).
NO_COLOR, FORCE_COLORTurn terminal colors off or force them on.

Generic log format

If you use an agent AgentMeter doesn't read yet, write its events to .jsonl files inside ~/.agentmeter/logs, one JSON line per event:

{"ts": "2026-10-10T14:02:11Z", "agent": "my-agent", "session": "s1", "cwd": "/home/ana/projects/acme", "type": "prompt"}

{"ts": "2026-10-10T14:02:30Z", "agent": "my-agent", "session": "s1", "type": "request", "model": "glm-5", "input": 12000, "cachedInput": 8000, "output": 900}

{"ts": "2026-10-10T14:03:05Z", "agent": "my-agent", "session": "s1", "type": "tool", "name": "edit", "file": "src/app.js"}

Required fields: ts and session. Types: prompt, request (with tokens) and tool (with a file, to attribute commits to the agent). cwd links the session to the client's project.

Security

If you find a vulnerability, email [email protected] before disclosing it. We reply within 72 hours and credit you if you like.