agental

Connectivity

Ways in for people, mail, and events out to your systems.

A real Linux machine with simple ways to reach it: a root shell, a public address for a port, and an address for mail. What happens in it goes out to the tools you already use.

sandbox-01your agent's sandboxa real Linux machine of its own
INBOUND
Ways in for people and mail.
OUTBOUND
Events out to your systems.
SSHA root shell, its own port
Public URLsHTTPS to a port you share
EmailAn address of its own
WebhooksLifecycle and mail events
OpenTelemetryMetrics and events to your collector
Any serviceAPIs and registries you allow

Log in over SSH.

Turn SSH on for a sandbox and log in as root, straight to the server it is on.

  • The sandbox gets a port of its own, which leads to its SSH server and to nothing else.
  • Who may log in is a separate matter: let a public key in, list the keys, take one out.
  • The host key comes over the API, so a client can pin it and is never asked to trust one.
  • It stays on through a stop and a start. The port is opened again when the sandbox runs.
Read the SSH guide →
your laptop · terminal
$ agental ssh sbx_7f3e2a9c41d0b8e6 --tmux
Host key checked against the API.
root@sandbox-01:~# tmux ls
agent: 1 windows (created 09:12)
root@sandbox-01:~#

Show what it built.

Give a port a public address, and anyone with the link can open what the agent is serving.

  • HTTPS on agental.site, with WebSockets carried.
  • It answers while the sandbox runs. Hide the address to take it down.
  • A port kept private is reached through the API, with your API key.
  • Up to 5 ports for each sandbox.
Read the public URLs guide →
a reviewer's browser
https://3f9c2a17b8d04e6a51c0.agental.site
Invoicesport 3000 · public
Served from sandbox-01, open to anyone with the link while it runs.

Give your agent an email address.

Every sandbox has a mail domain of its own, so your agent can be written to while it sleeps, and can write to you.

  • Mail costs $0.50 per 1,000 messages, received or sent, paid from what your plan includes. There is no monthly fee.
  • Mail is off for a sandbox until you turn it on, and a sandbox with mail off is never charged for it.
  • Any name before the @ reaches the sandbox. A message is kept for 7 days and read over the API, whether the sandbox is running or stopped.
  • A webhook is told as each message arrives, with what was made of its sender: SPF, DKIM, DMARC and a spam score.
  • The sandbox can write to one address: the one you sign in with. It cannot write to anyone else.
  • A key can be made for one sandbox's mail and nothing else. It is the key for an agent that reads what strangers wrote.
Read the email guide →
sandbox-01 · mail
✉
Your verification code[email protected] · 09:41
received
✉
Invoice 1045 is due 6 Nov[email protected] · 09:12
received

Be told when a sandbox starts, stops or fails.

A webhook posts to your server when a sandbox is made, starts, stops, fails or is deleted, so nothing has to keep asking.

  • A stop says why: you asked, its time limit came, or the plan stopped it.
  • Each event has one id, in every webhook it is sent to, so a duplicate is plain to see.
  • Each event carries the sandbox's tags and metadata, so your server knows which run it belongs to, and a change to them is an event of its own.
  • A template is told of too: made, changed, its secrets set or removed, named and never with a value, or deleted.
  • Every request is signed with a secret you are shown once. Rotate it when you need to.
  • A post your server does not take is tried eight times over a day, and every try is kept for 30 days with what it answered.
  • In the console, tick what each webhook is sent on a drawing of which events go where, and see every try of every post.
Read the webhooks guide →
your server · request
POST https://your-app.example/hooks/agental
X-Agental-Signature: sha256=9b1f…c04e
 
{ "type": "sandbox.stopped",
"data": { "sandboxId": "sbx_7f3e2a9c41d0b8e6",
"name": "sandbox-01" } }
Also part of Connectivity:OpenTelemetry, written up under Observability