Sandboxes for your agents. localhost for you.

Run multiple copies of your development stack locally or on a remote machine, and access each through localhost.

Homebrew

brew install devlanes-run/tap/devlanes

Shell script

curl -fsSL https://devlanes.run/install.sh | sh

npm

npm install -g devlanes

cargo binstall

cargo binstall --git https://github.com/devlanes-run/devlanes devlanes

devlanes / myapp
my-vps4 lanes / shared postgresconnected over ssh
lanecheckoutwebapiworkerdatabaseopen locally
0main:20000:20001:20002myapp_mainmyapp.localhost
1feat/checkout:21000:21001:21002myapp_lane1myapp-1.localhost
2fix/login:22000:22001:22002myapp_lane2myapp-2.localhost
3agent/perf:23000:23001:23002myapp_lane3myapp-3.localhost
j/k move enter open l logs tab monitor

Each lane has its own ports, hostnames and database.

Access remote services through localhost

Run the stack on a remote machine and connect from your laptop's browser, database client or desktop app.

The SSH connection provides local HTTPS addresses for apps and TCP access for other services.

See the agent workflow
your laptop / remote connection

$ devlanes connect my-vps

Connected to my-vps

browserhttps://myapp-1.localhostmy-vps / lane 1 / web :21000
database client127.0.0.1:5432/myapp_lane1my-vps / shared postgres / lane 1 data
local desktop apphttps://api.myapp-1.localhostlocal window / remote backend

Run several copies of your project

A lane groups the services and configuration for one running stack. Use separate worktrees, another checkout, or the same checkout with different settings.

Ports and hostnames

Each lane gets a port range and local hostnames. Run the checkout branch alongside main without assigning ports in .env files.

main :20000
checkout :21000

Per-lane databases

Lanes can share a Postgres server while using separate databases. Test a migration in one lane without changing main's data.

postgres / myapp_main
postgres / myapp_lane1

Project configuration

Define services and setup tasks in devlanes.yaml. Environment variables use each lane's ports and database names.

devlanes.yaml
web + api + worker

Give your agent a lane

An agent can start a stack for its changes and give you a localhost URL to test. It uses the same commands you use to inspect logs or stop services.

The daemon keeps services running when a terminal session ends.

A lane groups processes and data. The machine or container running them defines the security boundary.

agent session / myapp
your agentyour AI model / ~/dev/myapp

Start the checkout branch so I can test it.

$ devlanes up --lane feat/checkout

lane 1 ready / web :21000 / api :21001 / db myapp_lane1

The checkout stack is running alongside main. Open https://myapp-1.localhost on your laptop to try it.

Manage services from one terminal

View logs and resource use by lane, including services started by agents. Stop or restart a service without switching terminals.

devlanes / monitor
lanes

0 main 4.2 GB

1 feat/checkout 3.1 GB

2 fix/login 1.5 GB

3 agent/perf 2.9 GB

lane 1 / memory
3.1 GB / 4 GB budget

api / lane 1 / :21001

Listening on 127.0.0.1:21001

Database myapp_lane1 connected

GET /checkout 200

POST /orders 201

main is still running on :20001

s start x stop r restart / filter

Run your first lane

Install devlanes and describe your stack in devlanes.yaml.

Install devlanes