Dejima alpha

Up and running in minutes

One line to install, one word to run. The installer handles Tailscale, Docker, and the background service for you, so there's no infrastructure to build.

Get started

Two ways to run it. Most people want the first one.

Run it locally → Set up a server → Need help?

Run it locally on your computer

most common

Your daily computer. A single install is the whole thing: the server and the client on the same box, with nothing separate to connect.

1Install it

curl -fsSL https://dejima.tech/install.sh | bash

macOS or Linux. Sets up Tailscale, the island image, and the background daemon (and Docker, on macOS). Idempotent, so it's safe to re-run.

2Run it

dejima

The dashboard opens and walks you to your first sandboxed agent. That's the whole setup.

Run it as a server (e.g. Mac mini), use it from any computer

The daemon runs on an always-on box, a Mac mini in the closet or a Linux server, and you drive it from any computer. Set up the server first, then each computer you connect from.

First

On the server

The always-on box that hosts the islands. macOS or Linux.

1Install

curl -fsSL https://dejima.tech/install.sh | bash

2Provision the host

dejima onboard --provision-host

macOS: turns a fresh Mac mini into a server in one command (never-sleep power, Tailscale, Docker, the daemon). On Linux the installer already registered the service, so just run dejima to confirm it's up. Either way, note the DEJIMA_HOST it prints (e.g. 100.84.12.7:7273).

Then

On your computer

The client CLI that drives the server. macOS, Linux, or Windows.

1Install the client

macOS / Linux

curl -fsSL https://dejima.tech/install-client.sh | bash

Windows (PowerShell)

irm https://dejima.tech/install-client.ps1 | iex
Prefer a package manager like brew or npm?
brew install aoos/dejima/dejima
npm i -g dejima

Homebrew (macOS) or npm (any platform, handy on Windows or if you already use Node). These install just the CLI, so you point it at your server in step 2.

2Connect

dejima

If you used the guided installer above, it captured your server's address, so this just connects. Installed via brew or npm? Point it at your server once with dejima profile add mini <host>:7273 && dejima profile switch mini. Joining a teammate's server instead? They send you an invite (they run dejima token invite --role operator --host <addr>) and you run dejima join <invite>.

Good to know

The two commands above assume a couple of things. On most machines the installer handles them for you; here's what they are, in case you need to set them up by hand.

Dejima needs Tailscale

Tailscale is a private network that links your machines directly, so a server and the computers that drive it can reach each other with no public port to open. The installer offers to set it up and walks you through signing in, or you can install it yourself from tailscale.com. The server and each computer just need to be on the same Tailscale network.

Connecting a second computer, or a teammate? See connect to a server.

On Linux, install Docker first

On macOS the installer sets up Docker for you. On Linux it doesn't, so install Docker before you run install.sh:

sudo apt install docker.io          # Debian / Ubuntu
# sudo dnf install docker            # Fedora
# sudo pacman -S docker              # Arch
sudo systemctl enable --now docker
sudo usermod -aG docker $USER       # log out and back in for the group to take effect
The server has to be macOS or Linux

The Dejima server (the daemon) needs Docker, so it runs on macOS or Linux: a Mac mini, an always-on Linux box, or a VPS. A Windows PC can still be a client that connects to and drives a server, it just can't host one.

Setting up a headless server, like a Mac mini in the closet?

Provisioning a machine you'll run without a monitor (the account, remote login, Tailscale, and finding its address) is automated by a wizard you run on the server itself:

dejima onboard --provision-host

Run it on the machine that will host the islands, not on your laptop. The setup guides have the full walkthrough for each platform.

Add a teammate

Someone else can drive your server from their own computer, with their own private fleet on it. You mint them an invite, share the server over Tailscale, and they run dejima join. That same flow also covers pointing your own laptop at a remote server.

Set up a teammate, step by step →

Setting up a specific platform? The setup guides walk through each one end to end: Mac mini, Linux server, cloud VM, and your local machine.

Stuck? Have an AI help

Installation question or an error you can't place? Paste this into your own AI, fill in your specifics, and it'll help using Dejima's own docs.

Open in Claude → Open in ChatGPT → Opens in your own AI. Nothing is sent to us.

Run it yourself

In the dashboard, everything is a keypress; outside it, everything is a one-shot command.

dejima                              # the dashboard

# In the dashboard:
#   n → pick a repo + agent, launch       + → add another agent
#   ⏎ → open an island/agent in a window   ? → all keys
dejima init --repo git@github.com:you/foo.git    # or --local-copy for unpushed work
dejima ls                                         # all islands, last-used first
dejima agent add foo --type codex                 # a 2nd agent in foo's island
dejima connect foo                                # attach to the island shell
dejima connect foo/a1                             # attach to a specific agent (e.g. a1)
DEJIMA_HOST=mac-mini.tailnet:7273 dejima connect foo   # …from your laptop

Detach, don't exit. To leave a session, press Ctrl-b then d — it detaches and leaves the agent running. Typing exit can drop you into a reconnect loop. To reach a specific agent rather than a plain /workspace shell, attach by island/agent (e.g. dejima connect foo/a1).

CLI reference

CommandPurpose
dejimaInteractive dashboard — browse, manage, and launch islands. n new · ? help.
dejima initProvision a new island from a git URL or a local path.
dejima connectAttach to an island's session (multi-attach).
dejima lsList all islands.
dejima statusOne island in detail: presence, memory, CPU.
dejima hibernate / wakeStop / restart the container; volumes preserved.
dejima resetClear agent state. Preserves workspace.
dejima exec / cp / logsOne-shot command, file copy, log tail — no session attach.
dejima doctorHealth check: daemon, Docker, image, projects, webhooks.
dejima serviceInstall / uninstall dejimad as a host service.
dejima webhookSubscribe a URL to receive state-change events.
dejima purgeDestroy island and volumes.

Concepts

TermMeaning
IslandThe container holding one project and one or more agents.
AgentOne CLI (Claude Code, Codex) or headless process inside an island, on its own git worktree.
BridgeThe brokered I/O channel between host and island.
TradeA brokered, append-only export of changes from island to host.
IntakeRead-only files brokered into the island from the host.
LedgerA tamper-evident, hash-chained audit log of every brokered transaction.

Intake / Trade / Ledger are the brokered-context primitives — the seam a memory or context layer attaches to without breaking island isolation. See the positioning note.

Uninstall

Get your work out first. Dejima never touches your host folders — but work done inside an island lives in that island's Docker volume, and dejima purge destroys it. Before removing anything, make sure each island's work is pushed to its remote (or copied out):

dejima exec foo -- git status        # anything uncommitted or unpushed?
dejima exec foo -- git push          # send it to your remote
dejima cp foo:/workspace/file ./     # or copy files out directly

Then remove Dejima from the server:

dejima purge <name>                  # each island: container + volumes
dejima service uninstall             # stop + deregister the daemon
sudo rm /usr/local/bin/dejima /usr/local/bin/dejimad
rm -rf ~/.dejima ~/.dejima-src       # state + config, source checkout

On a client device, uninstalling is just deleting the dejima binary and removing DEJIMA_HOST from your shell profile. Docker and Tailscale are left in place — Dejima uses them but didn't install-own them; remove them separately if nothing else needs them.