Download · free · self-hosted

Put binigma on a machine you own.

One command installs the box, the service that keeps it running, and the current release. There is nothing to sign up for and no key to paste — binigma drives the agent CLIs you are already signed into. The one account involved is the login on your own box, and you create it there, in the browser, when you first open it.

Requirements

binigma ships arm64 builds only. Before anything else, open a terminal on the machine that will run binigma — on a Raspberry Pi that usually means SSH-ing into the Pi first — and run:

$ uname -sm

Match the output against this table exactly.

Output Machine Supported
Darwin arm64 Apple Silicon Mac (M1 and later) Yes
Linux aarch64 64-bit Raspberry Pi OS, or other arm64 Linux Yes
Darwin x86_64 Intel Mac No
Linux armv7l 32-bit Raspberry Pi OS No
Linux x86_64 Intel / AMD Linux No

Anything in the "No" rows means stop — the installer refuses these rather than half-installing. On a 32-bit Raspberry Pi OS the fix is to reinstall the 64-bit edition, which is a separate job.

One prerequisite per platform

  • Mac: Homebrew must already be installed — check with brew --version. If it is missing, get it from brew.sh first; the binigma installer will not install it for you, it just stops.
  • Raspberry Pi: a Debian-based system (Raspberry Pi OS is) and working sudo rights — the normal pi-style login has them. Check with sudo -v: it either succeeds quietly or complains, and a complaint here means the install will fail.

A Pi is a genuinely good host

binigma is light enough to live on a Raspberry Pi 5 humming on your desk 24/7 — which is the point, because sessions only survive a closed laptop lid if the machine running them never closes. A Mac you leave awake works just as well.


Two ways to install

The install is one command, but the machine has to be the right kind of machine, and when something goes wrong the error usually means something specific. So there are two routes — pick by how much you want to think about it.

Recommended for most people

Let a chatbot guide you

Copy one block of instructions into ChatGPT, Claude or Gemini. It goes one step at a time, asks about your machine, reads your terminal output back, and knows what each error means. You need a terminal window open next to the chat, and no prior knowledge.

Get the install prompt
If you live in a terminal

Run it yourself

Check the requirements above, do the dry run, then run the installer. Everything the guided route would tell you is on this page — it just does not hold the keyboard for you.

Jump to the command

Guided install

Copy the block below, paste it into a chatbot, and follow along. It is written for the model, not for you — you do not need to read it. It only uses commands that appear in the official install guide, and it will never ask you for a password, a token, a key or the contents of a config file. You type your password into your own terminal, never into the chat.

install-prompt.md
You are helping someone install **Binigma** on their own computer. Binigma is a self-hosted console
that runs coding agents (Claude Code, Codex) and terminal sessions on their machine, driven from a
web app on any device.

## How to behave

- Go **one step at a time**. Give the person a single command, then wait for them to paste the
  output back before continuing. Do not dump the whole sequence at once.
- **Only use commands that appear verbatim in this document.** If they hit something this document
  does not cover, say plainly that you do not know and that it is not covered here. Do not improvise
  shell commands, do not guess at file paths, and do not invent flags. A wrong command on someone's
  machine is worse than an unanswered question.
  - The one exception: a few commands below contain `<placeholders in angle brackets>`, or tell you
    to substitute a path the installer just printed. Fill those in — that is the intended use — and
    change nothing else about the command.
- Some steps need their password (`sudo`). They type it **into their own terminal**, never into this
  chat. Never ask them to paste a password, a token, a key, or the contents of a config file.
- Assume no prior knowledge. "Open Terminal" is a real instruction to some people. Explain what each
  command is about to do, in one sentence, before they run it.
- If they get stuck twice on the same step, stop trying variations and go to the troubleshooting
  section, then point them at the project's issue tracker.

## Step 1 — Check the machine is supported

Ask them to open a terminal on the machine that will **run** Binigma (not their laptop, if those are
different — on a Raspberry Pi that usually means SSH-ing into the Pi first) and run:

```sh
uname -sm
```

Match the output exactly:

| Output                           | Verdict                                                   |
| -------------------------------- | --------------------------------------------------------- |
| `Darwin arm64`                   | ✅ Apple Silicon Mac — supported                          |
| `Linux aarch64` or `Linux arm64` | ✅ 64-bit Raspberry Pi (or other arm64 Linux) — supported |
| anything else                    | ❌ Not supported — stop here                              |

Anything else means **stop**. Binigma only ships arm64 builds today, so an Intel Mac
(`Darwin x86_64`), a 32-bit Raspberry Pi OS install (`Linux armv7l`), an x86 Linux box
(`Linux x86_64`), or Windows will not work. The installer refuses these itself rather than
half-installing, but it is kinder to find out here. If they are on a 32-bit Raspberry Pi OS, the fix
is to reinstall the 64-bit edition of Raspberry Pi OS — that is a whole separate job, so tell them
so and stop.

Then confirm the platform-specific prerequisite:

- **Mac:** Homebrew must already be installed. Check with `brew --version`. If it is missing, send
  them to <https://brew.sh> to install it first — the Binigma installer will not install Homebrew
  for them, it just stops.
- **Raspberry Pi:** it must be a Debian-based system (Raspberry Pi OS is), and they need working
  `sudo` rights — the normal `pi`-style login has them. Check with:

  ```sh
  sudo -v
  ```

  It either succeeds quietly (after their password, or with no output at all) or it complains. A
  complaint here means the install will fail, so resolve it before going further — see
  **"`sudo` is refused"** in troubleshooting.

## Step 2 — Set expectations, then run the installer

Before they run anything, tell them what it is about to do, so nothing is a surprise:

- It installs a toolchain the box needs — Node.js 22, plus a few small tools — using Homebrew on a
  Mac or `apt` on a Pi.
- It installs the `claude` and `gh` command-line tools.
- It creates a Binigma folder on the machine and installs a small background service that keeps
  Binigma running and updates it automatically (it checks for a new release about every 10 minutes).
- It downloads and starts the current Binigma release, then checks it actually came up.
- **On a Mac it will ask for your password.** The background service is installed system-wide, so it
  starts at boot rather than at login. On a Pi the whole thing runs under `sudo`.
- **On a Mac, be clear about what "keeps running" covers.** The box keeps serving when they **log
  out**, and comes back on its own after a **reboot** — they do not have to stay signed in. It does
  **not** serve while the Mac is **asleep**, and closing a laptop lid sleeps it. Keeping it up around
  the clock is a Mac power-settings question (Energy Saver), not something the installer configures.
  Worth saying up front: "survives logout" and "always up" sound alike and are not the same promise.
- One Mac-specific heads-up worth giving before they start: the installer makes Homebrew's Node 22
  the linked default `node`. If they deliberately keep a different Homebrew Node version for other
  work, mention it now rather than after.

If they want to see exactly what would happen without touching the machine, offer the dry run first.
It prints every action and changes nothing:

```sh
curl -fsSL https://get.binigma.ai/install | sh -s -- --dry-run
```

The dry run doubles as a preflight, so it is worth reading rather than skimming: when a required
tool is missing it does not stop, it prints a line starting with `WARNING:` and keeps going. Those
lines are the point of running it. Ask them to search the output for `WARNING` and report any hits —
each one is something that would have made the real install fail.

Then the real install:

```sh
curl -fsSL https://get.binigma.ai/install | sh
```

Always give the URL with `https://` spelled out, exactly as written. Never shorten it to
`get.binigma.ai/install`.

This takes a few minutes, mostly downloads, and it prints what it is doing as it goes. Tell them to
let it finish and then paste back the **last 15 or so lines** — the trailing lines carry
instructions Step 5 refers back to, so a truncated paste will strand them later.

## Step 3 — Confirm it is running

A successful run ends with a banner like this:

```
✔ Binigma is installed and running.

  Local URL:  http://localhost:5180
```

followed by roughly half a dozen short indented notes — about automatic updates, how to re-run the
installer, remote access, where to read more, and signing Claude in. **Those trailing notes matter**
and are easy to miss: Step 5 below sends the user back to them. Make sure you have them
before moving on.

The banner is the finish line for the install: the installer does not print it until it has checked
that Binigma is genuinely answering on that address. Have them open the local URL in a browser **on
that same machine**.

Two things to say at this point:

- **The URL is local only.** Binigma listens on the machine's own loopback address, so it is not
  reachable from their phone or another computer yet. That is deliberate — remote access is what
  claiming the box buys, which is Step 4.
  If they are on a headless Pi and want to look at it right now from their laptop, they can open a
  **new** SSH connection that forwards the port. This changes nothing on the box:

  ```sh
  ssh -L 5180:127.0.0.1:5180 <their-pi-user>@<their-pi-hostname>
  ```

  Run that from the laptop, leave it open, and then browse to `http://localhost:5180` **on the
  laptop**. Closing that SSH session closes the tunnel.

- **Re-running the installer is safe.** The exact same command repairs an install and updates the
  service; it will not rotate their credentials or wipe their data. That is the first thing to try
  if the box is ever in a strange state.

If it did **not** finish, go to troubleshooting.

## Step 4 — Set the box up in the browser

When they open the local URL from Step 3, a brand-new box does **not** show a login form. It shows a
**setup screen** — "Set up this box" over three numbered steps: claim this box, sign in to Claude,
set up your workspace. Walk them through it; the first step is the only one that needs a decision.

**Step one offers two routes, and only one of them is open today.**

- **"Claim this box"** links the machine to a Binigma account so they can reach it from anywhere
  instead of only from that machine. It works by pasting in a **pairing code**. **The place to
  create that account and generate a code is not open to the public yet**, so there is no code for
  them to paste. Say that plainly, and **do not invent a way around it** — there is no sign-up URL
  to offer and no command that mints a code. A plausible-sounding invented one is the worst possible
  outcome here.
- **"Use this box locally"** is the route to take. It asks for an **email and a password** and
  creates the box's own account — the one account this machine will have. Nothing is sent anywhere:
  this is a login on their own machine, which is why they can pick it themselves. Tell them to
  choose a real password and keep it, because this is what they will sign in with from now on.

Two things worth saying while they choose:

- **Local is not a lesser option.** An unlinked box works fully — sessions, repositories, agents.
  What claiming adds is reaching it from another device over the internet.
- **It is not a one-way door.** The claim step stays available later in **Profile → Settings**, so a
  box set up locally today can be linked whenever the account side opens.

Once they submit that form they are signed in and the screen moves to step two by itself.

**If they see a login form instead of the setup screen**, this box has already been set up — the
setup screen appears only while the box has no account and has not been claimed, and it never comes
back. They should sign in with the account they already made.

## Step 5 — Sign Claude in

Binigma's agent sessions need the `claude` command-line tool on the box to be signed in, one time.
The installer already put that tool on the machine, and this is now the **second step of the setup
screen**, done entirely in the browser. It works the same on a Mac and on a Raspberry Pi.

Talk them through it:

1. The step starts by saying **"Claude is not signed in."** with a **Sign in to Claude** button.
   Have them press it — nothing appears until they do.
2. An **authorization link** then appears. Have them open it and approve access.
3. They will be given a **code**. They paste it back into the same step.
4. The step reports when the host is signed in, and moves on.

They can **Skip for now** and do it later from **Profile → Settings** — Binigma is usable without
it, but agent sessions will not run until it is done.

The installer also printed a one-time `claude setup-token` hint at the end. That is a shell route
for an admin working on the box directly and is **not** needed if they used the browser step above.
If they ask: its second half (storing the token) is written up for Raspberry Pi only, in section 9
of `docs/ops/pi-setup.md` in the Binigma repository, and there is no published Mac equivalent. Point
them at that file rather than reconstructing it, and do not translate the Pi instructions to macOS.

## Step 6 — First session

The setup screen's third step offers a short **interview** that asks about their work and drafts a
`CLAUDE.md` — the file the agents read as standing instructions for the workspace. It shows the
draft for approval before saving anything. They can skip it and do it later.

After that they are in the app. The shape of a first session is: register a repository, then start a
session against it from the new-session picker.

One thing worth knowing in advance, because it decides where they put their code:

- **On a Raspberry Pi**, repositories Binigma runs agents in must live under `/home/binigma/code`.
  The service runs inside a sandbox that makes the rest of the filesystem read-only, so a checkout
  sitting in someone's own home directory cannot be written to. This one is a real constraint, worth
  planning around before they clone anything.
- **On a Mac**, there is no such sandbox. The matching folder is `code` inside the Binigma folder in
  their home directory and it is the tidy default, but it is not a requirement — do not tell a Mac
  user to move an existing checkout.

## Troubleshooting

Work from the **exact** error text — the installer's failure messages are specific. Ask for the
final lines verbatim rather than a paraphrase.

### `curl` cannot reach the install URL

Symptoms: `Could not resolve host: get.binigma.ai`, a `404`, or `curl` exiting immediately with no
output at all (the `-f` flag makes it fail silently on an HTTP error).

This means the install endpoint is not serving yet. There is no workaround and nothing to retry —
**do not** offer a mirror, an alternative URL, or a manual download, because none exists. Tell them
the installer is not published yet and stop there.

### `unsupported platform:`

The rest of that line quotes back what `uname -sm` reported, then says Binigma ships arm64 bundles
for Linux/Pi and Apple-Silicon Mac only. The machine is neither. Stop — go back to Step 1; this
machine cannot run Binigma.

### `Homebrew required`

A Mac without Homebrew. Install it from <https://brew.sh>, then re-run the install command.

### `this installer needs root`

Seen on a Pi. It means the `sudo` command itself is not installed on the system and they are not
logged in as root — unusual, and typical of a stripped-down image. They need to install `sudo`, or
run the installer as root.

### `sudo` is refused

Different from the above, and much more common: `sudo` exists, but this account is not allowed to
use it. The give-away is Step 1's `sudo -v` reporting something like _"is not in the sudoers file"_
or rejecting the password repeatedly.

The installer does not have a dedicated message for this — it fails at its first real action
instead. Nothing is installed when it does, so there is no mess to clean up. The fix is to use an
account with administrator rights on that machine, which on Raspberry Pi OS the default login has.

### `curl is required` / `openssl is required`

A basic tool is missing from an unusually bare system. Install the named tool with the system
package manager, then re-run.

### `Binigma did not become healthy on port`

The line goes on to name the port (`5180` unless they changed it). Everything installed, but the
service did not come up. The same error line tells you where to look, and it differs by platform:

- **On a Pi** it names a command. Have them run it and paste the output:

  ```sh
  journalctl -u binigma-deploy -n 50
  ```

- **On a Mac** it names two log _files_ rather than a command. Take the path it printed and read the
  end of each one, substituting the path from their error message:

  ```sh
  tail -n 50 <the-log-path-the-installer-named>
  ```

### `Detected a Binigma source checkout → forcing DRY-RUN`

They ran the installer from inside a copy of Binigma's source code, so it refused to touch the
machine and only printed what it would have done. Almost certainly not what they meant. Have them
`cd ~` and run the install command again from there.

### It seems to hang for a long time

Usually a slow download of the toolchain or the release bundle. Wait it out — several minutes is
normal on a Pi. Only worry if there is no new output for 10 minutes or more.

### It finished fine, but the browser shows nothing at the URL

Usually the browser is on a different machine than the box. Confirm they opened it **on the machine
they installed on**, or used the SSH port-forward from Step 3.

### Anything else

Say so honestly and suggest they open an issue with the full terminal output, rather than guessing
further with them.

## What this document does not cover

Some of these have answers elsewhere, and some genuinely do not exist yet. Do not reason any of them
out from first principles.

- **Public domains and HTTPS, backups, and day-to-day operations** are documented — in
  `docs/ops/pi-setup.md` in the Binigma repository, written for the Raspberry Pi. Point them there
  rather than improvising.
- **Uninstalling Binigma, moving it to another machine, and running it for more than one person**
  are not written down anywhere yet. Say that plainly if asked.

If the chatbot improvises, stop it. The prompt tells it to say "I don't know" rather than invent a command, because a wrong command on your machine is worse than an unanswered question. If it starts suggesting paths or flags that are not in this page, that is the moment to come back here.


Install it yourself

The install endpoint is not published yet. get.binigma.ai does not resolve at the time of writing, so the command below will fail with could not resolve host. There is no mirror and no manual download — the bundles are not public yet. This page documents the install exactly as it will work the moment the endpoint goes live.

1 · Dry run first

This prints every action and changes nothing. It doubles as a preflight: when a required tool is missing it does not stop, it prints a line starting with WARNING: and carries on. Those lines are the point — search the output for WARNING, because each hit is something that would have made the real install fail.

$ curl -fsSL https://get.binigma.ai/install | sh -s -- --dry-run

2 · The real install

$ curl -fsSL https://get.binigma.ai/install | sh

Takes a few minutes, mostly downloads. Let it finish — the last lines it prints carry instructions you will need.

On a Mac it will ask for your password — the background service is installed system-wide so it starts at boot rather than at login. On a Pi the whole thing runs under sudo. Run it from your home directory: if you run it from inside a copy of binigma's own source code it refuses to touch the machine and forces a dry run.


What the installer does

Nothing here should be a surprise, so: in order, it

  1. installs the toolchain the box needs — Node.js 22 plus a few small tools — with Homebrew on a Mac or apt on a Pi;
  2. installs the claude and gh command-line tools;
  3. creates a binigma folder on the machine and installs a small background service that keeps binigma running and updates it automatically, checking for a new release about every 10 minutes;
  4. downloads and starts the current release, then checks that it actually came up.

What "keeps running" covers on a Mac. The box keeps serving when you log out, and comes back on its own after a reboot — you do not have to stay signed in. It does not serve while the Mac is asleep, and closing a laptop lid sleeps it. Keeping it up around the clock is a Mac power-settings question (Energy Saver), not something the installer configures. Worth knowing before you rely on it: "survives logout" and "always up" sound alike and are not the same promise.

One Mac-specific heads-up. The installer makes Homebrew's Node 22 the linked default node. If you deliberately keep a different Homebrew Node version for other work, know that going in.


Confirm it works

A successful run ends with a banner like this:

✔ Binigma is installed and running.

  Local URL:  http://localhost:5180

followed by roughly half a dozen short indented notes — about automatic updates, how to re-run the installer, remote access, where to read more, and signing Claude in. Those trailing notes matter and are easy to miss. The banner is the finish line: the installer does not print it until it has checked that binigma is genuinely answering on that address.

Open that URL in a browser on that same machine.


First run in the browser

A brand-new box does not show a login form. It shows a setup screen — Set up this box — over three numbered steps: claim this box, sign in to Claude, set up your workspace. Only the first needs a decision from you.

1 · Claim it, or keep it local

Claim this box links the machine to a Binigma account so you can reach it from anywhere. It works by pasting in a pairing code — and the place to create that account and mint a code is not open to the public yet, so today there is no code for you to paste, whatever host the screen names.

Use this box locally is the route to take. It asks for an email and a password and creates the box's own account — the one account this machine will have. Nothing is sent anywhere; this is a login on your own machine, which is why you get to pick it. Choose a real password and keep it, because it is what you will sign in with from now on.

Local is not the lesser option: an unlinked box works fully, sessions and repositories and agents included. What claiming adds is reaching it from another device. It is also not a one-way door — the claim step stays available afterwards under Profile → Settings, so a box set up locally today can be linked whenever the account side opens.

2 · Sign Claude in

Agent sessions run the claude command-line tool on the box, so it has to be signed in once. The installer already put it there and this step does the rest in the browser, the same way on a Mac and on a Pi: press Sign in to Claude, open the authorization link it then shows, approve access, and paste the code you are given back into the step.

You can Skip for now and do it later from Profile → Settings. binigma is usable without it, but agent sessions will not run until it is done.

3 · Set up your workspace

A short interview asks about your work and drafts a CLAUDE.md — the file the agents read as standing instructions. It shows you the draft before it saves anything, and it can be skipped and done later too.


Reaching it remotely

Straight after install, binigma listens on the machine's own loopback address. It is not reachable from your phone or another computer, and that is deliberate. Remote access is what claiming the box buys: it opens an outbound tunnel to the binigma gateway and you reach it by signing in, so no ports are forwarded and nothing is exposed to the internet.

The claim step itself is in the browser today — step one of the setup screen above, and still there afterwards under Profile → Settings. What is not open yet is the account side that mints the pairing code it asks for, so for now a box you install is a local box. The note your installer prints at the end still describes remote access as arriving with the gateway; the setup screen is the more current of the two.

In the meantime, on a headless Pi you can look at it from your laptop over SSH port forwarding. This changes nothing on the box:

$ ssh -L 5180:127.0.0.1:5180 <your-pi-user>@<your-pi-hostname>

Run it from the laptop, leave it open, then browse to http://localhost:5180 on the laptop. Closing that SSH session closes the tunnel.


Updates & re-running

binigma updates itself. The service polls for a new release roughly every 10 minutes and applies it as an atomic swap with a smoke-check and automatic rollback, so a bad release does not leave you with a dead box. Your database is backed up before each swap.

Re-running the installer is safe. The exact same command repairs an install and updates the service; it will not rotate your credentials or wipe your data. It is the first thing to try if the box is ever in a strange state.


Troubleshooting

Work from the exact error text — the installer's failure messages are specific, so read the final lines verbatim rather than paraphrasing them.

curl cannot reach the install URL

Could not resolve host: get.binigma.ai, a 404, or curl exiting immediately with no output at all — the -f flag makes it fail silently on an HTTP error. This means the install endpoint is not serving yet. There is no workaround: no mirror, no alternative URL and no manual download exists.

unsupported platform:

The rest of that line quotes back what uname -sm reported. binigma ships arm64 bundles for Linux/Pi and Apple Silicon only, and this machine is neither. Go back to Requirements — this machine cannot run binigma.

Homebrew required

A Mac without Homebrew. Install it from brew.sh, then re-run the install command.

this installer needs root · or sudo is refused

needs root means sudo is not installed at all and you are not logged in as root — unusual, and typical of a stripped-down image. Install sudo, or run the installer as root.

sudo is refused is different and much more common: sudo exists but this account is not allowed to use it. The give-away is sudo -v reporting "is not in the sudoers file" or rejecting your password repeatedly. The installer has no dedicated message for this — it fails at its first real action instead, and nothing is installed when it does, so there is no mess to clean up. Use an account with administrator rights; on Raspberry Pi OS the default login has them.

curl is required · openssl is required

A basic tool is missing from an unusually bare system. Install the named tool with the system package manager, then re-run.

Binigma did not become healthy on port

The line names the port — 5180 unless you changed it. Everything installed, but the service did not come up. The same error line tells you where to look, and it differs by platform. On a Pi it names a command:

$ journalctl -u binigma-deploy -n 50

On a Mac it names two log files rather than a command — take the path it printed and read the end of each one with tail -n 50 <the-log-path>.

Detected a Binigma source checkout → forcing DRY-RUN

You ran the installer from inside a copy of binigma's source code, so it refused to touch the machine and only printed what it would have done. Almost certainly not what you meant — cd ~ and run it again from there.

It seems to hang · or the browser shows nothing

Hanging is usually a slow download of the toolchain or the release bundle. Several minutes is normal on a Pi; only worry if there is no new output for 10 minutes or more.

Nothing at the URL is usually the browser being on a different machine than the box. Confirm you opened it on the machine you installed on, or used the SSH port-forward above.

A login form instead of the setup screen means this box has already been set up. The setup screen shows only while a box has no account and has not been claimed, and it does not come back on its own — sign in with the account that was made then.

Anything else

Open an issue with the full terminal output rather than guessing further. The installer's messages are specific enough that the exact text is usually all anyone needs to tell you what happened.