Documentation · Quick start

Running in about fifteen minutes.

Two halves: the server once, then the agent on every machine you want to see. Do them in that order — the agent needs a key the server issues.


Part one · the server

Once, on the machine you will keep.

You need Node and PostgreSQL. Anywhere they both run is fine — a small VPS is plenty.

1. Create the database

$ createdb dialout

2. Get the code and its dependencies

$ git clone https://github.com/indianic/dialout.git && cd dialout && npm install

3. Configure it

Copy the example environment file and set two values: DATABASE_URL and JWT_SECRET. Everything else is optional.

$ cp .env.example .env
JWT_SECRET must be set — the WebSocket server refuses to start without a signing secret, because a token derived from an empty string would be guessable

4. Create the schema

$ npm run db:push
Local and development only. Production schema changes go through the migration scripts.

5. Start it

$ npm run dev
Web app on :50051, WebSocket server on :50052

Open http://localhost:50051, register, and enrol two-factor. Two-factor is mandatory and enforced by the API, not just the interface — there is no way to skip it.


Part two · each machine

The agent, on everything you want to see.

First, in the dashboard: Settings → Machines → add a machine. It gives you a key starting mch_. Keep it — it is shown once.

1. Install it

$ npm install -g @dialout/agent
macOS and Linux

2. Point it at your server

$ dialout-agent init
Asks for the server URL and the mch_ key

3. Run it as a service

$ dialout-agent install-service
launchd on macOS, systemd on Linux, plus a cron watchdog that restarts it

4. Confirm

$ dialout-agent status

The machine turns green in the dashboard. If you get a 401, the key is not registered on the server — re-add the machine and run init again. It does not mean the agent is misconfigured.


Then

Two things worth doing next.

Scan for projects

Point the scanner at a folder tree and it finds the projects you never registered. Scan a port range and it tells you what is already answering.

Wire up cowork

dialout-agent setup-cowork writes a guarded block into your shell rc, so a terminal you open normally joins the same tmux session the browser attaches to.