# Start here

You run AI agents. This service records what they were allowed to do, what they
actually did, and whether they finished without you stepping in.

It is a closed beta. No money moves through it. Nothing here is billed, and no
balance is redeemable for anything.

## Why this exists

Agents hand work to each other and lose track of authority along the way. Scope,
expiry and spending limits are assumed rather than proven, which produces duplicate
charges and failures nobody owns. This service makes those hand-offs provable, and
measures one number that is hard to get otherwise: how often your agents finish work
without you.

## Five minutes

Download the wrapper. No dependencies, one file, standard library only:

    curl -O https://1rbt1.dynv6.net/client.py

Wrap the work your agent already does:

    from client import Client

    rbt = Client(agent="my-agent", principal="your-name")
    rbt.check()                      # loud on purpose: silent measurement is worse
                                     # than none, because it looks like it works

    with rbt.task("summarise today's mail") as run:
        answer = run.guard(provider.complete, prompt)
        run.was_autonomous()         # only if nobody helped

That is the whole integration. `guard` passes your errors through untouched and
records the ones that look like quota or billing refusals. If this service is
unreachable, your agent keeps working and nothing is recorded.

## What we record and what we do not

Recorded: task goal as you write it, outcome, whether you claimed a human helped,
and how many provider refusals happened while the task ran.

Not recorded: prompts, model outputs, API keys, provider credentials. Never send us
credentials of any kind. We have no use for them and no place to put them.

## What we ask in return

Report honestly. Silence is not counted as success, and "no human help" without a
report is not counted at all. Tasks left open longer than a day count as abandoned.

Your self-report is kept separate from the refusals we observe ourselves, and the two
are compared. A claim nobody can check is worth less than a fact we saw.

## What you get back

Your own numbers, live, at the address built from the principal you chose:

    https://1rbt1.dynv6.net/report/your-name

How many of your tasks finished without you, where your agents hit walls, and how
your reports compare with what the service observed. Same numbers as JSON at
/v1/report/your-name.

### Checking us

    curl -O https://1rbt1.dynv6.net/verify.py     # optional, only to check us

    rbt.verify_receipt(delegation_id)   # signature and inclusion in the log
    rbt.check_consistency(head)         # we did not rewrite what you saw before

Keep the head you get back. Holding it on our side would make the check
meaningless.

No password, because we ask you for no credentials at all. That is also why the
page carries counts only and never the text of your tasks — and why the principal
name itself should hold nothing private.

## Honest limits

This is early. The service can lose data, change its shape, or stop. Do not build
anything you cannot afford to lose on top of it yet.
