Your machines, one room.

A self-hosted control room for every project on every machine you own. Ports, terminals, live previews and your AI sessions — one URL, from any browser or your phone.

The agent dials out, so nothing has to dial in.

MIT licensed. Self-hosted. No hosted tier, no account with us.


The problem

Four machines, and no single place that knows what is running.

So you go and ask each one. Every answer is somewhere else: a port is in lsof, a process is in pm2 list, a credential is in a .env you have to ssh to read. None of it is wrong. It is just spread across four terminals and your memory.

Before
$ lsof -i :3000 COMMAND PID USER FD TYPE NODE NAME node 41822 you 24u IPv6 TCP *:3000 (LISTEN) $ ssh build-box $ pm2 list │ api │ online │ 3h │ │ worker │ errored │ 0s │ $ cat .env | grep DATABASE cat: .env: No such file or directory # wrong machine

What is different

Four things that are hard to get in one place.

Several tools do one of these well. The claim here is that the combination is the product, and that the outbound-only agent is what makes the combination cheap to run.

01

The agent dials out

No inbound ports, no VPN, no port forwarding.

The agent connects out to your server and holds the socket open. There is no inbound port to open on the developer machine, no VPN to join, and no firewall rule to write. A laptop on hotel Wi-Fi is as reachable as a rack server. If the machine can reach the internet, you can reach the machine.

02

Terminals are real tmux

Close the browser and the build keeps running.

Not a web shell. Sessions survive browser reloads, network drops and app switches, and you can reattach from your phone. Open a terminal natively and you join the same session — the agent writes a guarded block into your shell rc so it just happens. A dropped socket detaches rather than kills: the PTY is held for 10 minutes so a reconnect resumes where you were.

03

AI sessions read as chat

It reads the transcript, it never scrapes the TUI.

Claude Code, Codex and Grok each already write a structured JSONL transcript. The agent tails that file and normalises all three into one event type. Scraping the alternate-screen terminal UI would break on every upstream release; reading the transcript does not. Three vendors, one chat surface, across every machine you own.

04

The tunnel rewrites the app

Real apps work through it, not half-loaded ones.

Absolute /_next/ and /api/ paths are rewritten in HTML, JS and CSS, and an injected script patches fetch, XMLHttpRequest, history.pushState, anchor clicks and the Navigation API. That is why a Next.js or PHP app served through a path prefix actually works instead of loading its shell and stalling.


How it works

Three moving parts.

01

The agent starts on your machine

It connects outbound to your server and holds the socket open. Nothing listens for an inbound connection, so there is nothing to expose.

02

Your server holds every socket

One WebSocket process — 1753 lines, one file — is the only thing that talks to agents. The web app never does.

03

You open one URL

Ports, terminals, files, processes, tunnels and AI sessions, from any browser or the phone app.

The architecture in detail


Features

What it does.

Projects

Every project on every machine, with what is actually running right now.

  • Live port checks
  • Multi-machine projects
  • Process control
  • Notes and todos

Terminals

tmux-backed, shared with your native terminal, resumable by name.

  • tmux-backed
  • Cowork
  • Resumable by name
  • Recording and playback

AI sessions

Claude Code, Codex and Grok across your whole fleet, as chat.

  • Three vendors, one surface
  • Every machine, one list
  • Launch mode
  • Push when it needs you

Infrastructure

Tunnels, files, services and machine enrolment.

  • HTTP tunnel
  • File browser
  • System services
  • Machines and API keys

Account and platform

Two-factor that is actually enforced, on web and on native.

  • PIN and mandatory TOTP
  • Browser and native sessions
  • Web push
  • PWA and mobile app

The full feature inventory


Use cases

What people actually do with it.

Agencies and freelancers

Show a client the branch, right now

Open a tunnel on the port the feature branch is running on and send the URL. No deploy, no staging environment to keep in sync, and no explaining why staging is three commits behind.

Anyone with a long build

Keep a build running while you leave

The terminal is tmux. Close the laptop, open the phone app, and reattach to the same session. The build never knew you left.

Anyone with more than one machine

Find out what is on port 3000

Scan a port range and see what answers. Scan a folder tree and register the projects you forgot you had. The dashboard then checks those ports on every load.

All use cases · Who it’s for


Works with
tmux
Claude Code
Codex
Grok
PostgreSQL
PM2
launchd and systemd
Web Push (VAPID)

What each one does


Open source

All of it, MIT licensed.

Server, agent, shared library and mobile app, in one repository. Nothing is held back for a paid tier. Read the authorization code before you trust it with a machine — that is the point of shipping it this way.

38

API routes, every one authenticated and every client-supplied id authorized

19

database tables, in your own Postgres

19

agent CLI commands, macOS and Linux

3

AI vendors, added without changing the chat surface


Install

Four commands on each machine.

This is the agent. The server is a separate one-time setup — installation guide, or have us do it.

01 Install the agent
$ npm install -g @dialout/agent
macOS and Linux
02 Point it at your server
$ dialout-agent init
Asks for the server URL and an mch_ key from Settings → Machines
03 Install it as a service
$ dialout-agent install-service
launchd on macOS, systemd on Linux, plus a cron watchdog
04 Check it is connected
$ dialout-agent status
The machine turns green in the dashboard

If you would rather not self-host it alone

The software is free. These are not.

Professional installation

We install and configure Dialout on your AWS, Azure, GCP, DigitalOcean or VPS: SSL, database, email, storage, backups, Docker and domain.

What is included

Enterprise

Enterprise deployment, custom integrations and development, priority support, migration assistance, security review, architecture consulting and an SLA.

Talk to us

Support

Community support is free, in GitHub issues and discussions. Paid support is available if you need a response time in writing.

Get support


Questions

Before you install it.

No. The agent connects outbound to your server and holds the socket open. Nothing connects in to the developer machine, so there is no port to open, no VPN to join and no firewall rule to write.

Put every machine you own in one room.

Self-hosted, MIT licensed, and running in about fifteen minutes.