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 on your computer
most commonYour 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.
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).
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.
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
| Command | Purpose |
|---|---|
dejima | Interactive dashboard — browse, manage, and launch islands. n new · ? help. |
dejima init | Provision a new island from a git URL or a local path. |
dejima connect | Attach to an island's session (multi-attach). |
dejima ls | List all islands. |
dejima status | One island in detail: presence, memory, CPU. |
dejima hibernate / wake | Stop / restart the container; volumes preserved. |
dejima reset | Clear agent state. Preserves workspace. |
dejima exec / cp / logs | One-shot command, file copy, log tail — no session attach. |
dejima doctor | Health check: daemon, Docker, image, projects, webhooks. |
dejima service | Install / uninstall dejimad as a host service. |
dejima webhook | Subscribe a URL to receive state-change events. |
dejima purge | Destroy island and volumes. |
Concepts
| Term | Meaning |
|---|---|
Island | The container holding one project and one or more agents. |
Agent | One CLI (Claude Code, Codex) or headless process inside an island, on its own git worktree. |
Bridge | The brokered I/O channel between host and island. |
Trade | A brokered, append-only export of changes from island to host. |
Intake | Read-only files brokered into the island from the host. |
Ledger | A 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.