Getting started
IsotopeAI runs as a single Node process on your own device. This guide covers installation on each supported platform, the first run, and how to verify the install actually works.
Two things you need Node.js 20 or newer, and a free Supabase project. The installer checks for Node and tells you what to do if it is missing. Supabase setup is covered in Supabase setup and takes about five minutes.
Requirements #
| Requirement | Minimum | Notes |
|---|---|---|
| Node.js | 20.x | 22.x is tested in CI. No native modules, so no build toolchain needed. |
| Disk | ~120 MB | Repository including pre-built frontend bundles. |
| RAM | ~150 MB | Steady state. Bundles are gzipped once and cached in memory. |
| Supabase | Free tier | Auth, Postgres, Storage and Realtime are all used. |
| git | any | Required for isotope update. |
There are no runtime npm dependencies. package.json lists
zero dependencies and zero devDependencies — everything the
server needs is in the Node standard library.
Android via Termux #
Termux is a first-class target. The installer detects it and wires up home-screen shortcuts automatically.
-
Install Termux
Install from F-Droid or GitHub releases. Do not use the Play Store build — it is deprecated and cannot install current packages.
-
Install prerequisites
pkg update && pkg upgrade -y pkg install -y nodejs-lts git
-
Clone and run setup
git clone https://github.com/Suydev/isotope-code cd isotope-code ./install-termux.sh
This installs the
isotopecommand, creates~/.isotope/for state and logs, and offers to set up Termux:Widget shortcuts. -
Start it
isotope start
Then open
http://127.0.0.1:3000in your Android browser.
Keep Termux alive Android aggressively kills background processes. Acquire a wake lock from the Termux notification, and disable battery optimisation for Termux, or the server will be stopped when you switch apps.
Linux and macOS #
git clone https://github.com/Suydev/isotope-code cd isotope-code ./setup.sh
setup.sh verifies Node, scaffolds .env from
.env.example if it is missing, installs the isotope CLI
onto your PATH, and starts the server. Pass --no-start to
configure without launching.
Windows #
Use PowerShell:
git clone https://github.com/Suydev/isotope-code cd isotope-code .\install.ps1
Or Command Prompt with setup.bat. Both install
isotope.bat / isotope.ps1 equivalents of the CLI.
Point it at your database #
A fresh install writes a .env pre-filled with a shared demo project so
the app boots immediately. For your own data, replace those two values:
# .env SUPABASE_URL=https://your-project-ref.supabase.co SUPABASE_ANON_KEY=your-anon-public-key PORT=3000
Then restart:
isotope restart
Every variable is documented in Configuration. Creating the schema is covered in Supabase setup.
Verify the install #
Three checks, in increasing depth:
# 1 — is the server responding?
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3000/__isotope/ping
# expect: 200
# 2 — version, git SHA and live service-worker cache name
curl -s http://127.0.0.1:3000/api/version
# 3 — full dependency and configuration report
isotope doctor
Then read the log for patch warnings. A healthy start produces around 52
[…Patch] lines and zero anchor failures:
grep -iE 'anchor not found|String not found' ~/.isotope/logs/server.log # expect: no output
Why that grep matters The server rewrites the pre-built frontend bundles on every request, matching exact strings inside minified code. If a match fails the bundle is served unpatched and a feature breaks silently. Any output from that command means something needs re-anchoring — see Architecture.
First login #
Open the app and create an account. On signup the server creates your row in
public.users, and database triggers immediately seed six satellite
tables — profile, stats, points, onboarding, presence and community enrolment.
If any of those rows were missing you would see an empty leaderboard or a non-functional community tab, so the triggers exist to make that impossible. Details in Database → triggers.
Email and password is the only sign-in method enabled out of the box. Google sign-in works but needs an OAuth client, a consent screen and a redirect list — and the button is hidden until you configure it, because a visible button that fails on click is worse than no button. The full walk-through is in Supabase setup → Google sign-in.
Next steps #
Supabase setup
Create the schema, buckets and policies in your own project.
Read guide →Configuration
Every environment variable and what actually reads it.
Read guide →CLI reference
start, stop, doctor, update and the rest.
Troubleshooting
Black screens, stale bundles, empty leaderboards, port conflicts.
Read guide →