Self-hosted · browser-based shell

Open a shell on any machine — from your browser on a server you own.

A public server you run yourself. A small agent you install on any machine — a laptop, a home server, a container, an edge box. The agent dials out; you get a live terminal in the browser. No inbound ports, no VPN, no third party in the path.

target machine
$ potaru init --server admin.example.com:7000 --token pt_enroll_...
$ potaru run
✓ Connected as agent a1b2c3d4 — now open a shell from the dashboard

No inbound ports. The agent just dials out. Every session is audit-logged.

What people use it for

Anywhere you'd reach for SSH or a VPN just to get one terminal.

Incident response

Get a shell on a production box behind a firewall in seconds, from any browser — no bastion host, no VPN client to configure under pressure.

Home-lab & edge devices

Reach a Raspberry Pi, NAS, or home server behind NAT and double-NAT with zero port-forwarding.

Support & contractor access

Grant temporary, audited terminal access to a specific machine — revoke the enrollment token when the job's done.

CI runner & container debugging

Drop the agent into a container or ephemeral runner to get an interactive shell into it while it's alive, without exposing SSH.

Fleet of small machines

One dashboard shows every enrolled machine's online status — click any of them for a terminal, no per-machine setup.

Air-gapped-adjacent networks

The agent only ever dials out over one outbound TLS connection — nothing needs to accept inbound traffic on the target network.

How it works

A public server you log into from a browser, and an agent on the target machine. The agent dials out to the server over one TLS connection — so nothing needs an open inbound port.

Operator
Any browser

Logs into https://admin.example.com, sees which agents are online.

potaru server
Public host

Terminates the admin web UI/API and the agent tunnel; opens a shell stream on the operator's request.

⇅ one TLS + yamux tunnel
potaru agent
Target machine

Dials out, authenticates, and spawns a real PTY-backed shell when asked.

1

Enroll the agent

Create an enrollment token in the dashboard, run potaru init + potaru run on the target — it mints its own permanent identity on first connect.

2

Click "open shell"

The agent shows up online in the dashboard. Click it — the server opens a new multiplexed stream and asks the agent to spawn a shell.

3

A live terminal, in your browser

The browser bridges a WebSocket to that stream via a real terminal emulator — nothing installed beyond a browser. Reconnects automatically if the agent drops.

Accountable by design. Every shell session — and every admin action — is audit-logged with actor, target, and timestamp. Enrollment tokens are scoped and revocable, separate from each agent's own permanent secret. The agent never defaults to root.

Everything you'd expect — and you own it

No third party in the path of your terminal. No per-seat pricing.

Real terminal, in the browser

A real PTY on the target, rendered with a full terminal emulator — resize, scrollback, the works.

Works behind NAT

The agent dials out, so home-labs, containers, and office boxes are reachable with zero inbound ports.

Scoped, revocable enrollment

Admin-issued enrollment tokens (label, max uses, expiry) are separate from each agent's own permanent secret — revoke one without disconnecting anything else.

Full audit log

Every shell session and every admin action is recorded — actor, target, source IP, timestamp. Destructive actions require explicit confirmation.

Never defaults to root

A shell you get is only ever as privileged as the OS (or container) user the agent process runs as. Root access is your explicit choice, not a default.

Self-hosted

You hold the data in an embedded database. No external services, no vendor in the loop, nothing phoning home.

Two static binaries

Server and agent, no runtime dependencies. Docker images too, if you'd rather run it that way.

Rate-limited by default

Login, agent tunnel auth, and enrollment redemption all lock out repeated failures per source IP.

Ready to get a shell on something?

The full installation guide for the server and agent lives in the docs — each installs with a single command.

# on your public host
curl -fsSL https://potaru.okonomi.cloud/server/install.sh | sudo bash

# on the machine you want a shell into
curl -fsSL https://potaru.okonomi.cloud/client/install.sh | bash