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.
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.
brew --version. If it is missing, get it from
brew.sh first; the binigma installer will
not install it for you, it just stops.
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.
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.
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.
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 promptCheck 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 commandCopy 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.
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.
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.
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
$ 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.
Nothing here should be a surprise, so: in order, it
apt on a Pi;
claude and gh command-line tools;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.
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.
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.
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.
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.
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.
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.
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.
Work from the exact error text — the installer's failure messages are specific, so read the final lines verbatim rather than paraphrasing them.
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.
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.
A Mac without Homebrew. Install it from brew.sh, then re-run the install command.
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.
A basic tool is missing from an unusually bare system. Install the named tool with the system package manager, then re-run.
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>.
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.
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.
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.