Give every agent session its own VM.
Full dev environments on your own AWS account. Your repo, your secrets, your tools. Detach and it parks itself. Attach and it is back in about 20 seconds.
brew install kerem-kaynak/tap/pier ##Why pier
Coding agents changed what a dev environment is. A session is no longer you at one machine. It is an agent that runs for hours and wants its own branch, its own ports, its own docker daemon. And you want several at once. Every existing place to run them fights you:
- [x] Your laptop. Sessions fight over ports and files. Closing the lid kills the run.
- [x] Hosted agent platforms. Your code, your secrets, and your agent's credentials live on someone else's infra, billed by the seat.
- [x] A cloud dev box. Bills 24/7 while the agent thinks and while you sleep. You still hand-build repo, auth, secrets, and tools for every session.
pier makes each session a micro-VM that manages its own lifecycle. One command launches an EC2 instance and drops you into tmux inside it, with:
- [+] your repo on a fresh branch, uncommitted edits included
- [+] Claude Code and Codex installed and authenticated
- [+] your MCP servers configured
- [+] your dev environment built by the repo's own setup script
##What you get
- [+] Parks itself. An in-VM supervisor stops the instance once the agent goes quiet. The disk persists.
- [+] Resumes in about 20 seconds. Files, branches, and credentials exactly as you left them.
- [+] Sessions as hostnames.
pier proxyserves the dev server atcheckout-flow.pier:3000, mirrored on localhost too. - [+] One-command resize. Outgrown the box? One 40 second cycle swaps the instance type, disk intact.
- [+] GitHub-first transfer. The VM fetches your repo straight from GitHub. Only secrets ride the tunnel.
- [+] Per-repo baked images.
pier bakesnapshots your toolchain once. Creates drop to about 60-90 seconds. - [+] No control plane. No server, no database, no daemon. Session state lives in EC2 instance tags.
- [+] One transport. Attach, exec, file push, and port forwards are all OpenSSH, direct or over an SSM tunnel.
##The numbers
| Session state | Costs |
|---|---|
| running | ~$0.03/h |
| parked | ~$3-4/mo (disk only) |
##How it works
A session is one EC2 instance plus its EBS disk, tagged and namespaced by your caller identity. All state lives in those tags and on the disk. There is nothing else to operate, back up, or pay for.
laptop AWS account (yours)
────── ───────────────────
pier CLI/TUI ── aws cli ──────────▶ EC2 API (create/stop/start/tags)
│ ┌─────────────────────────┐
└── ssh ─────────────────────▶ │ session VM │
(direct to its public IP, │ tmux ▸ claude / codex │
SSM tunnel as fallback) │ pier-supervisor │
│ └─ parks the VM when │
│ detached and quiet │
└─────────────────────────┘ - [+] The supervisor samples every 5 seconds for attached and busy. Detached and quiet past the idle timeout parks the VM.
- [+] The VM holds no cloud credentials. Parking is the VM running
shutdown -h now. Anything needing account credentials happens from the laptop. - [+] A runaway cap parks a looping agent anyway, so it cannot burn compute for days.
##vs. other tools
| pier | Codespaces | Hosted agents | DIY EC2 | |
|---|---|---|---|---|
| Runs on | your AWS account | GitHub's infra | vendor's sandbox | your AWS account |
| Idle cost | ~$3-4/mo (self-parks) | metered, auto-stop | per-seat / per-task | full rate unless you script it |
| Agent-ready | harnesses + auth + MCP travel | you configure | their agent only | you configure |
| Session lifetime | until you rm it | workspace-scoped | task-scoped | until you clean it up |
| Interface | your terminal, tmux | VS Code / web | web UI | your terminal |
| Setup | one wizard | per-repo config | account signup | everything by hand |
##FAQ
Does pier need a server or a database?
No. There is no control plane. Session state lives in EC2 instance
tags, and pier ls is a filtered describe-instances call.
Does the VM hold my cloud credentials?
No. The instance role carries SSM and nothing else. Parking is the VM shutting itself down. Resize and destroy happen from the laptop.
What happens when I close my laptop?
The session keeps running without you. Once the agent goes quiet past the idle timeout, the supervisor parks the VM. Attach later and it resumes in about 20 seconds.
How do secrets travel?
Once, at create, as an explicit manifest: your agent configs, your
tokens, and the repo files your .pier-include lists.
Nothing loose ships by default, and the create prints which env
files it is not carrying.
Do private repos work?
Yes. pier reuses whatever GitHub credential your laptop already has:
a gh login, git's https credential helper, or ssh keys
through a forwarded agent. It verifies the fetch works before
relying on it.
What survives parking?
Files, git state, and installed tools survive. Running processes do not, parking is a clean stop. Hibernate with RAM intact is on the roadmap.
Which platforms?
The CLI runs on macOS and Linux against AWS. pier proxy
is macOS-only for now, pier port works everywhere. A
GCP driver is designed and parked on the roadmap.
How do I get rid of everything?
pier teardown removes every piece of account groundwork
pier created, all of it tagged. Sessions go with pier rm.
Tie up at the pier.
One wizard, then every session is one command away.
brew install kerem-kaynak/tap/pier