● v0.2.0 · pre-alpha · macOS arm64 · MITruns in your AWS account, reachable over Tailscale
Hermetic
hermeticCoverOne agent
hermeticCoverOne agent
For people who run Hermes agents

Every agent gets a sealed box

hermetic runs each Hermes agent on its own machine, in your own AWS account. Nothing on the internet can connect to it. You reach it over your tailnet, from one desktop app.

v0.2.0pre-alphaApple siliconMIT
hermeticDwg 01One fleet
01Dwg 01One fleet

Memory that outlives the machine

What an agent learns lives on a separate data volume, snapshotted every day and kept for seven. Recreate the machine and the same volume attaches to the new one. Destroy it and the volume stays unless you ask otherwise.

  • 100 GiB gp3 by default
  • 7 daily snapshots
  • Plan, then apply, for anything destructive
hermeticDwg 02Your account
02Dwg 02Your account

Your account, no middleman

Everything runs in your AWS account. One CloudFormation stack per fleet holds the network, agent records, a bucket, a fleet role and secrets, and has no always-on cost of its own. The account is frozen at init and checked before every call.

  • Bedrock by default: no model API key
  • Several fleets can share one account
  • MIT licensed, no hosted service
hermeticDwg 03Your Mac
03Dwg 03Your Mac

A fleet you run from one app

Your Mac joins the same tailnet. The desktop app and the hermetic CLI share one core and call AWS directly. Chat with any agent, watch its browser, and run one agent or a whole fleet from the same window.

$ hermetic agent ps --json
04Zero to agentA real session, abridgedSheet 04 of 06

Zero to agent in two commands

Bring an AWS profile and a Tailscale tailnet. hermetic init builds the fleet's foundation; hermetic agent create gives a Hermes agent its own sealed machine. About twelve minutes, most of it the box installing itself. Watch it in the terminal or in the app: the switch keeps your place.

dana@mbp ~ zshHermetic.apptalk to it
$ hermetic init --create --profile acme-prod --region us-east-1
▸ acme-prod · 123456789012 · us-east-1 · profile acme-prod
caller arn:aws:sts::123456789012:assumed-role/admin/dana
organisation o-4kq81zt2mv
◇ type the twelve-digit account id to confirm (123456789012)
│ 123456789012
◇ Tailscale OAuth client secret (tskey-client-…)
│ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
tailscale running · tailnet tail7c1e.ts.net · this node dana-mbp
15% identity account 123456789012 as arn:aws:sts::123456789012:assumed-role/admin/dana
19% directory fleet directory ready in us-east-1 (0 fleet(s) in this account)
30% preflight tailscale running on tail7c1e.ts.net as dana-mbp
35% foundation … creating the foundation: VPC, sealed security group, agent role, bucket, 2 tables, snapshot policy
36% foundation Vpc CREATE_COMPLETE (1/22)
37% foundation PublicSubnet0 CREATE_COMPLETE (3/22)
38% foundation AgentSecurityGroup CREATE_COMPLETE (5/22)
39% foundation AgentRole CREATE_COMPLETE (6/22)
41% foundation AgentsTable CREATE_COMPLETE (8/22)
42% foundation SnapshotPolicy CREATE_COMPLETE (10/22)
50% foundation created stack hermetic-k3v9q2xa (public) in 3m08s
65% tailscale tailscale OAuth client secret stored in SSM (client kQ7xT2bN4CNTRL)
75% ami pinned Ubuntu 24.04 arm64 image ami-0c4f1e9a2b7d3e816
85% fleet wrote the _fleet item
87% directory registered fleet k3v9q2xa in the us-east-1 directory
92% artifacts pushed artifacts/0.5.1/3f9a1c07be52d481/hermeticd (sha256 7c2e90d14a6b…) and 7 stage(s); the fleet manifest names 0.5.1
96% ready the fleet manifest names hermeticd 0.5.1
98% ready tailscale OAuth client kQ7xT2bN4CNTRL can mint tag:hermetic keys, list devices and edit the policy file
99% policy policy: hermetic entries written (ssh, acls)
100% done fleet k3v9q2xa created in 123456789012 · us-east-1
$ hermetic agent create atlas
▸ k3v9q2xa · acme-prod · 123456789012 · us-east-1 · profile acme-prod
2% validate creating atlas (medium) in us-east-1
20% secrets tailscale auth key minted and stored in its SSM slot
40% render rendered 21 files, config_hash 9c2e71d04ab35f86
55% volume data volume vol-0a8c3f1e27d94b650 (100 GiB)
80% instance … launching a t4g.2xlarge on ami-0c4f1e9a2b7d3e816
85% instance instance i-0f2b8a7c41e3d9056 recorded on the agent row
90% instance … attaching data volume vol-0a8c3f1e27d94b650 to i-0f2b8a7c41e3d9056
92% instance data volume vol-0a8c3f1e27d94b650 attached to i-0f2b8a7c41e3d9056
93% instance atlas handed off to its instance; hermeticd reports from here
100% done atlas created
the box boots, joins your tailnet and runs 7 bootstrap stages
$ hermetic agent history atlas
▸ k3v9q2xa · acme-prod · 123456789012 · us-east-1 · profile acme-prod
TIMESTAMP ACTION TRANSITION ACTOR DETAIL
2026-10-11T14:11:35.000Z ready bootstrapping→ready hermeticd/atlas 7 stage(s) ok
2026-10-11T14:11:35.000Z stage -→- hermeticd/atlas 06-verify ok in 13.8s
2026-10-11T14:11:21.000Z stage -→- hermeticd/atlas 05-service ok in 2.2s
2026-10-11T14:11:19.000Z stage -→- hermeticd/atlas 04-apply ok in 301.7s
2026-10-11T14:06:17.000Z stage -→- hermeticd/atlas 03-config ok in 1.3s
2026-10-11T14:06:16.000Z stage -→- hermeticd/atlas 02-data-volume ok in 4.1s
2026-10-11T14:06:12.000Z stage -→- hermeticd/atlas 01-tailscale ok in 22.4s
2026-10-11T14:05:50.000Z stage -→- hermeticd/atlas 00-preflight ok in 1.6s
2026-10-11T14:05:48.000Z boot creating→bootstrapping hermeticd/atlas running 7 bootstrap stage(s) from hermeticd 0.5.1
2026-10-11T14:04:18.000Z create -→creating arn:aws:sts::123456789012:assumed-role/admin/dana requested
$ hermetic agent status atlas | grep -E '^(status|tailnet name|dashboard|desktop) '
▸ k3v9q2xa · acme-prod · 123456789012 · us-east-1 · profile acme-prod
status ready
tailnet name k3v9q2xa-atlas.tail7c1e.ts.net
dashboard https://k3v9q2xa-atlas.tail7c1e.ts.net/
desktop https://k3v9q2xa-atlas.tail7c1e.ts.net/vnc/
$ hermetic chat listen atlas
▸ k3v9q2xa · acme-prod · 123456789012 · us-east-1 · profile acme-prod
atlas: listening
$ hermetic chat atlas 'what is on your data volume?'
▸ k3v9q2xa · acme-prod · 123456789012 · us-east-1 · profile acme-prod
(thought for 2s)
$ bash -> running
$ bash -> ok (exit 0) in 1s
/data is my 100 GiB data volume, 1% used. My home, memory, skills and
this conversation live there, so they stay put if this box is replaced.
The 40 GiB system disk is 15% used.
$

Output formats are the CLI's own; account, names, ids and timings are illustrative. Abridged: the Tailscale setup notes init prints before the secret prompt, the tailnet confirmation and most of the 22 stack resources are cut. The atlas reply is an example. The APP view is an illustration of the desktop app's screens over the same run: the AWS and bootstrap timings are shared, the clicks are the app's own, so it reaches the chat sooner.

05The appFive screensSheet 05 of 06

Five screens you will use every day

The desktop app and the hermetic CLI share one core. Each screen here has a command that does the same thing.

1Screen 1 of 5The fleet

See every agent at a glance

Board, table and triage show the same live fleet three ways, so a degraded agent or a stalled boot stands out before you go looking.

$ hermetic agent ps
Fleet · us-east-1 · 5 agents
atlasready0.21.3
corviddegraded0.21.1
kestrelready0.21.3
lumenready0.21.3
mothstopped0.21.3
wrenunreachable0.21.3
AgentStatusHealthVersionSizeMem
01 atlasready0.21.3M t4g.2xlarge38%
02 corviddegraded0.21.1S r8g.large22%
03 kestrelready0.21.3M t4g.2xlarge17%
04 lumenready0.21.3M t4g.2xlarge61%
05 mothstopped0.21.3S r8g.large—
Attention2degraded, unreachable or behind
corvid degraded · 0.21.1
wren unreachable · last heartbeat 6m
Healthy3ready and on latest
atlas 0.21.3
kestrel 0.21.3
lumen 0.21.3
Stopped1disks only
moth stopped 2d
2Screen 2 of 5Chat

Talk to any agent, on any box

Every bot on every box you listen to sits in one rail. The transcript lives on the agent's data volume, and hermetic keeps no copy.

$ hermetic chat atlas/default "status?"
3Screen 3 of 5New agent

Start an agent from one panel

Name it, pick a machine, and read the monthly price before anything launches. The panel also prints the command that makes the same agent, so the next one can be a script.

$ hermetic agent create heron --preset heavy
4Screen 4 of 5Desktop

Watch its browser, or take the wheel

Every agent runs one headed Chrome on its own display. You see the window it drives, so you can get it past a login wall and hand it straight back.

$ hermetic agent status atlas
5Screen 5 of 5Volumes

Rebuild the box, keep the memory

What an agent learns lives on its own EBS volume with seven daily snapshots. Destroy the agent and the volume stays, ready to give to a new one.

$ hermetic agent create cinder-2 --volume vol-0a91c2…
06Sizesus-east-1 list pricesSheet 06 of 06

Pick the power

Every size is Arm. A new size lands on the next recreate, and the memory comes with it.

CPU · Graviton
GPU · G5g
$7microt4g.micro
$14xxsmallt4g.small
$28xsmallt4g.medium
$86smallr8g.large
$196medium ★t4g.2xlarge
$344larger8g.2xlarge
$688xlarger8g.4xlarge
$1,376xxlarger8g.8xlarge
$2,7523xlarger8g.16xlarge
$307gpu-xsmallg5g.xlarge
$406gpu-smallg5g.2xlarge
$604gpu-mediumg5g.4xlarge
$1,002gpu-largeg5g.8xlarge
$2,003gpu-xlargeg5g.16xlarge
$12.89smallest agent, 8 GiB disk, running all month
$209the default medium, disks included
$9.60a stopped agent: only its disks bill
Full price table →

Compute list prices, us-east-1, per month. Model usage is separate. Bar height on a log scale. ★ default.

Seal your
first agent