The dev environment your AI coding agents run in
An agent that can load the page, read the logs and query the database ships work you can review at a URL. PortBay provisions that environment per project, in one click.
What is an agentic development environment?
An agentic development environment is a local setup a coding agent can run and verify against, not just edit: the app is actually serving, at a hostname the agent can fetch, with a database it can query and logs it can read. Without it the agent writes code it cannot check. PortBay provisions one per project on macOS: it detects the stack (Laravel, WordPress, Next.js, Vite, plain Node, static sites), fills in the start command and port, issues a trusted HTTPS certificate for a real .test domain, resolves it with a managed local DNS resolver, and routes it through a bundled Caddy edge. MySQL, MariaDB, PostgreSQL, Redis, MongoDB and Memcached are one click away, injected into the project's process as DATABASE_URL and DB_* variables; outgoing mail lands in a built-in Mailpit inbox. The stack idles under 80 MB of RAM, needs no Docker, and is free for six projects.
Verified against the product, 2026-07-10.
Press play, get an environment
One click boots the runtime, the certificate, the domain and the services — the environment a dispatched agent inherits.
From folder to running app
- Add the project
- Press play
- Attach services
- Dispatch the agent into it
- Review at a URL, not in a diff
Add the project
Point PortBay at the folder. It reads the stack and fills in the runtime, start command and port. No config files to write first.
portbay add ~/code/blogPress play
PortBay provisions the runtime, issues the mkcert certificate, resolves the hostname through its managed DNS, and routes it with Caddy.
https://blog.testAttach services
One click creates a supervised database instance; DATABASE_URL, DB_HOST and DB_PORT are injected into the project's process on every start. Outgoing mail is captured in Mailpit.
Dispatch the agent into it
A card moved to To Do launches the assigned agent inside this environment. It edits code, loads the URL, reads the logs and queries the database: the loop you would use, without you driving it.
Review at a URL, not in a diff
The agent comments what changed and the card advances. You open the running page to judge the work, instead of reconstructing it from a patch.
The environment, tier by tier
3 without an account, 6 with a free account, unlimited on Pro.
PHP (Laravel, WordPress), Node (Next.js, Vite), static sites and mobile targets, each run the right way.
MySQL, MariaDB, PostgreSQL, Redis, MongoDB, Memcached — supervised, isolated data directories.
Move projects from .test to any local suffix; hostnames migrate.
The runtimes it installs
Building the same environment by hand
Before an agent can verify its own work, someone has to give it a runnable app. The manual route is a per-project pile of tools and config.
PortBay provisions this per project in one click, and every dispatched agent inherits it.
# One project's worth of environment, assembled manually$ brew install [email protected] node mysql mailpit mkcert dnsmasq caddy$ mkcert -install && mkcert blog.test$ echo 'address=/.test/127.0.0.1' >> /opt/homebrew/etc/dnsmasq.conf$ sudo sh -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'$ cat >> Caddyfile <<'EOF'blog.test { tls blog.test.pem blog.test-key.pem reverse_proxy 127.0.0.1:5173}EOF$ mysqld --initialize-insecure --datadir ~/db/blog # port? .env? you.# Now do it again for the next project. Then explain it to the agent.
One app, not a stack of tools
Agent task board
A Kanban board both you and your agents work. Cards are Markdown in the repo; moving one to To Do dispatches the agent.
Explore →HTTPS + .test domains
https://name.test per project: mkcert certificates, managed local DNS and a bundled Caddy edge, with expiry and reissue in view.
Explore →Local databases
Six engines, one wizard: isolated data dirs, dedicated ports, supervision, and connection vars injected into linked projects on start.
Explore →Asked before downloading
Why do AI coding agents need a running environment?
Because an agent can't verify what it can't run. Against a running app it loads the page, reads the logs and queries the database after each change, so mistakes surface during the run instead of in your review. Orchestrators that only manage git worktrees leave the agent guessing whether its code works.
Which stacks does PortBay detect?
PHP apps including Laravel and WordPress, Node frameworks like Next.js and Vite, plain Node servers, static sites, and mobile targets including Flutter, Expo, iOS and Android. Detection fills in the runtime, start command and port; you can override any of it.
Does the environment use Docker?
No. Runtimes like PHP-FPM and Node run directly on macOS under Process Compose supervision, so projects start in seconds and the whole app idles under 80 MB of RAM. No images, no YAML, no VM.
How does PortBay inject database credentials into a project?
Link a database instance to the project and PortBay injects DATABASE_URL, DB_CONNECTION, DB_HOST, DB_PORT, DB_USERNAME and DB_PASSWORD into the project's process on every start. Your own per-project env values always win over injected ones.
Is the agent environment a paid feature?
No. The environment and the task board both ship in the free, open-source Community tier for up to 6 projects (3 without an account). Pro removes the project cap; it does not unlock the environment.

Give your projects and your agents a real local home.
Download for macOSFree & open source · macOS 11+ on Apple Silicon · Pro from $10/mo