agent· working · client detached · session held · files synced

You can look away now.

The agent runs in a container on a server your team owns. The files it writes are on your laptop seconds later — in your editor, in your terminal, against your running servers.

A disconnected client whose agent is still producing output is never treated as idle. That is the whole product.

Pre-release. We're onboarding a small number of teams that already run their own infrastructure.

The Voyeur app: a sidebar of synced workspaces beside remote tabs running a coding agent inside the server container.

The agent leaves the laptop. The files don't.

A coding agent runs where your machine is, so your machine has to stay open, awake and connected for as long as the work takes. Voyeur splits that in two: the process moves to a server your team runs, and the files stay where you actually work.

Your server
  └── the system
        └── one isolated environment per member
              ├── member A · agent + terminal sessions   ⇅ live sync ⇅   laptop A
              ├── member B · agent + terminal sessions   ⇅ live sync ⇅   laptop B
              └── …

Your laptop stopped being the machine in the loop

It used to be the machine the agent ran on, which is why it had to stay open, awake and connected for as long as the work took. Now it renders your tabs and holds your files, and nothing on the server is waiting on it. Close it mid-task and the only thing that stops is your view of the work.

The session outlives your window

A disconnected client whose agent is still producing output is never idle — a hard rule, because it is the entire point. Shut the lid, change networks, come back: the tabs return with their scrollback.

The files land on your machine in seconds

The agent writes on the server; sync brings the result down within seconds. The console you debug in stays your own — your servers, your tests, your tools.

Your machine keeps the repository

.git is never synced. History moves one way, laptop to server, so the agent can read the log, the diff and the blame while your credentials never leave your desk.

One team key, and nobody on the team sees it

The admin configures the provider once, from inside the product. The key is injected into each environment and refuses to print itself through any formatting path, so it stays out of logs.

Sharing a workspace is membership, not a shared folder

Each member gets the workspace in their own isolated environment, with their own clone. Nobody’s uncommitted work lands in someone else’s tree.

Environments nobody is using get out of the way

No client attached and no agent output for 48 hours, and the environment hibernates — then wakes fast enough that you do not notice it had.

Three screens, and you know what it does.

The running product, on a live installation. Host, paths and names are anonymised; nothing else is staged.

The agent runs on the server

Tabs stream from a container on your installation, held open independently of your window. Nothing here runs on the laptop that took the screenshot.

  • Connected — the server has opened this member's environment.
  • Several tabs, one workspace — each keeps its own conversation, in a directory that lives on the server.
  • synced 27s ago — every workspace is timed, so you know how stale your copy is.
The Voyeur app: a sidebar listing three workspaces with sync ages, and two remote tabs open on a workspace where a coding agent is running inside the server container.
The workspace sidebar: three workspaces, each timed by its last sync, each with its own actions.

Your console, on your machine, on their files

Your own shell — same prompt, same tools — pointed at a directory an agent somewhere else just edited.

  • A local tab — a real shell on your own machine, sitting beside the remote ones.
  • syncing · 2 files — the transfer is reported as it happens.
  • Push 1 commit — the repository stays yours; history moves one way, laptop to server.
The Voyeur app with a third tab open: a local shell prompt running on the user's own machine, beside two remote agent tabs.
The tab strip: three remote tabs from the server, and one local shell on the laptop.

The sync says what it did — and what it refused

Sync is not silent. It reports setup, transfers and what it will never touch, so a missing file is a message rather than a mystery.

  • Ready in about a minute — declared tools and packages installed, and it said so.
  • 20 patterns are never synced — the refusals are listed, not hidden.
The Voyeur app with the sync notices tray expanded, showing messages about a workspace environment finishing its setup.
The sync notices tray: what the environment set up, and when.

What holds up, and how fast it comes back.

Measurements, not benchmarks — the numbers we have, not the ones we hope for. One Linux server, one installation; yours will differ.

0.59s

connect → tab ready

1.67s

connect → agent responding

0.44s

reconnect after a server restart

0.70s

wake from hibernation

First byte of live output: 0.21s. Coming back has to be immediate, or people leave the laptop open — the habit the product exists to break.

Where the cost sits

A per-seat bill grows with headcount. Usage grows with work done.

Take your current agent bill and ask which of the two it grows with.

Billed forwork done, not seats held
The provider credentialheld by the admin; members never see it
Spend is attributed tothe project, not the person
Who runs the serveryou — your infrastructure, your account
Talk about running it on your infrastructure

Tell us the team size and what you self-host today. We will say plainly if yours is not a fit yet.

Where the integration stands.

Pre-release, and specific about it. The core is built, running daily and measured; what you see above is the product, not a mockup. It is not open to the public yet.

Integrated and working

  • Server-side sessions with multiple tabs and reconnect
  • One isolated environment per member, with the team credential injected
  • Hibernation and wake
  • Bidirectional live sync, with the repository kept one-way
  • The desktop app, and the local console beside remote tabs
  • Per-workspace environment setup from a declared config

In progress

  • A full week of daily use by a second team, on one shared installation and one shared key
  • Per-member usage visibility for whoever pays the bill

Not there yet

  • Accounts, teams and roles
  • Recovery from an unplanned power cut: a planned restart keeps your tabs, an unexpected one does not
  • Encryption at rest for the stored provider key
  • Windows on the desk — macOS and Linux only for now