Documentation

How an agent runs here, what the policy file means, and which promises are enforced by something rather than intended by someone.

Getting started

  1. Create an agent. The name becomes its hostname and cannot be reused later, even after the agent is archived — so an old link can never reach somebody else's.
  2. Give it a model. Your own provider key, stored encrypted and granted to that one agent.
  3. Write a policy. Until you do it is deny *, which is a working agent that cannot reach anything.
  4. Connect a channel and message it.

The policy language

Four verbs, one file. The most specific rule that matches wins — not the first, and not the last, so re-ordering the file cannot change what it means.

allow   api.github.com        read write
ask     gmail.googleapis.com  send
deny    *

cap     $2.00 / day hard

Verbs like read and send are resolved from the request itself — the host, the path and the method together — so send on Gmail means sending mail rather than any request that happens to be a POST.

What is actually enforced

The distinction worth caring about is between a promise kept by a mechanism and one kept by intention. These are mechanisms:

Credentials

Stored under envelope encryption — a key per secret, wrapped by a master key that is not in the database and therefore not in any database backup. Granted per agent. Nothing reads one back: the summaries this API returns have no field for a secret, so there is no filter that could be forgotten. The agent's container is the only thing that ever decrypts one.

What is not built yet

Named here because finding out at the moment you need something is worse than reading it now.