# devlanes | 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-vps** 4 lanes / shared postgresconnected over ssh

| lane | checkout | web | api | worker | database | open locally |
| --- | --- | --- | --- | --- | --- | --- |
| 0 | main | :20000 | :20001 | :20002 | myapp\_main | myapp.localhost |
| 1 | feat/checkout | :21000 | :21001 | :21002 | myapp\_lane1 | myapp-1.localhost |
| 2 | fix/login | :22000 | :22001 | :22002 | myapp\_lane2 | myapp-2.localhost |
| 3 | agent/perf | :23000 | :23001 | :23002 | myapp\_lane3 | myapp-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](#agents)

your laptop / remote connection

$ devlanes connect my-vps

Connected to my-vps

browser `https://myapp-1.localhost` my-vps / lane 1 / web:21000

database client `127.0.0.1:5432/myapp_lane1` my-vps / shared postgres / lane 1 data

local desktop app `https://api.myapp-1.localhost` local 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 agent your 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

12:04:01 Listening on 127.0.0.1:21001

12:04:01 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](#install)