github

adj.ac/ent

Humans and agents live adjacently.

Adjacent is a local dev-server harness — one supervised dev server that you and your agent share, behind a real URL.

Your dev server has two developers now.

When you and your agent need the same local server, you evict each other. The agent takes the process — you lose the logs. You take it back — the agent can't verify its work.

Adjacent supervises the server so neither of you has to own it. One daemon boots, routes and watches every app; both of you talk to it through the same CLI.

Read the source
in practice
$adj add .# register the app's adjacent.toml $open https://site.adj.ac# first request boots the server $adj logs site --tail# one log, both of you read it $adj agent-instructions >> CLAUDE.md# teach your agent to share
agentic by design

One CLI for both of you

The same commands for human and agent — every read takes --json. No separate agent mode, so the two sides can't drift.

Lazy boot

Nothing runs until a request hits name.adj.ac. Concurrent requests during boot wait on the same start.

Ready means ready

The proxy never forwards to a half-booted process. TCP-open by default, or poll a health check URL for a 2xx.

Idle shutdown by default

No traffic for 15 minutes and the app stops. Long agent sessions don't accumulate orphaned servers.

TLS without a key on disk

The local CA's private key lives in your keychain, never on disk — and the cert is name-constrained so it can never sign for another domain. *.adj.ac resolves from public DNS; no /etc/hosts.

Never runs as root

Privileged setup prints the command for you to review and sudo. The daemon itself never escalates.

status

Coming soon to a terminal near you.

Built in public — follow along on GitHub

Rust · macOS · open source