The Tynn desktop companion. A tray-resident workspace + terminal manager for projects you track in Tynn and (later) sessions you run against an Aionima local AGI gateway.
Status: beta. Public so developers can audit what the binary does on their machine and contribute back. Expect rapid iteration.
- TheFloor — a cross-project window with a tree of every terminal
you've defined, organised by workspace, with adaptive grid layouts
(1 = full, 2 = split, 3 = focus-stack, 4 = grid). Terminals are real
PTYs (xterm.js + node-pty), so they run TUI apps like
claude code,vim,htopcleanly. - Stage windows — satellite workspace windows pinned to a single project, sharing live PTYs with TheFloor so you can mirror a running shell to a second monitor.
- Workspace upgrades — wrap an existing folder (or a folder full
of sub-repos) as an Aionima
{slug}.agienvelope: each sub-repo becomes a git submodule underrepos/; loose knowledge folders (plans/,docs/,k/, etc.) migrate into.ai/. - GitHub Device Flow — connect a GitHub account once, then create
.agienvelopes directly on GitHub under your user or any org you belong to. No client secret stored anywhere — Device Flow + OS keychain (safeStorage).
Download the installer for your platform from Releases:
- Windows:
Genie-Setup-<version>.exe - macOS:
Genie-<version>-arm64.dmg - Linux:
Genie-<version>.AppImage
Auto-update is handled by electron-updater — once installed, Genie
polls Releases on launch and prompts you when a newer build is
available. Update payloads are checksum-verified (SHA-512 in
latest.yml) before being applied.
Alpha builds are not yet code-signed, so your OS will prompt the first time you install. This is expected; the warning goes away once we have signing certificates configured. Follow the steps for your platform:
- Windows: SmartScreen blocks the installer with "Windows protected your PC". Click More info → Run anyway, then step through the NSIS installer normally.
- macOS: Gatekeeper blocks the
.dmgwith "can't be opened because Apple cannot check it for malicious software". Open System Settings → Privacy & Security, scroll to the bottom, click Open Anyway on the blocked entry, then re-open the DMG. (On older macOS: right-click the DMG → Open → Open at the confirmation prompt.) - Linux:
chmod +x Genie-<version>.AppImage && ./Genie-<version>.AppImage. No prompt.
You only see these prompts on the first install. Auto-updates
after that run through electron-updater's SHA-512-verified flow
without re-prompting.
If you click Run anyway through SmartScreen and the installer
window closes without installing anything, Windows Defender
quarantined the unsigned .exe after SmartScreen approved it —
they're separate defense systems. Open Windows Security → Virus
& threat protection → Protection history, find the entry for
Genie-Setup-<version>.exe, click Actions → Restore, then
re-run the installer. Signed installers don't hit this. Full
diagnostic walkthrough in
docs/release-pipeline.md.
Installers are produced by release CI on every
v*tag. Signed installers ship automatically once the code-signing secrets are configured — see docs/release-pipeline.md.
You need Node.js ≥ 20, npm, and git.
git clone https://github.com/renaissance-analytics/genie.git
cd genie
npm install
npm run devOn Windows, native modules (node-pty, better-sqlite3) ship with
prebuilt binaries for common Electron ABIs. If npm install complains
about Visual Studio Build Tools, the prebuilds are usually still
enough for development — install Build Tools only if you need to
package a release locally.
In dev mode the updater path is the Phase 1 git-pull-and-rebuild
flow (Settings → Updates), which runs git fetch && git checkout <tag> && npm install && npm run build in-place.
genie/
├── main/ ← Electron main process
│ ├── background.ts ← boot, window factory
│ ├── terminal/ ← PTY manager (multi-attach, scrollback)
│ ├── workspace/ ← .agi envelope create / convert / analyse
│ ├── github/ ← Device Flow OAuth + repo API
│ └── updater/ ← git-pull-and-rebuild updater
├── renderer/ ← Next.js 15 renderer
│ ├── pages/master.tsx ← TheFloor
│ ├── components/Master/ ← chooser, grid, panels, context menus
│ └── components/Terminal/XTerm.tsx
├── docs/
│ └── agi-format.md ← public `.agi` envelope contract
└── test/ ← Vitest unit tests
Genie picks the right updater path automatically:
When you run a signed installer from Releases, the running Genie polls
its publish provider (GitHub Releases) for newer versions, downloads
the new installer in the background, verifies the SHA-512 checksum
recorded in latest.yml, and prompts you to restart. The restart
swaps the binary atomically via the installer's own mechanism.
When you ran git clone && npm install && npm run dev, the updater
detects you're not a packaged build and switches to the Phase 1 flow.
Settings → Updates shows the same UI but executes:
git fetch origin --tags
git checkout <new-tag>
npm install
npm run build
Output streams into the Updates panel; on success you're prompted to
restart. On failure the previous HEAD is restored.
The same Settings panel UI handles both — the backend is selected by
app.isPackaged.
- TheFloor is a single window. What looked like separate "tray window / settings / workspace" surfaces in the early scaffold all collapse into TheFloor's sidebar + Settings modal. Stage windows are the only multi-window path, and they share PTYs with TheFloor via a multi-attach pty manager.
- Multi-attach PTYs. The
TerminalManagerlets a single pty be rendered in N windows simultaneously. A scrollback buffer (1 MB cap) replays history to a late-joining window so a Stage that opens a terminal already running in TheFloor catches up instantly. - Persistent terminal specs. Each terminal is a row in SQLite
(
terminal_specstable). Specs survive restart; the PTY itself does not (we re-spawn from the spec when you reopen). - Native deps are prebuilt-first.
node-ptyandbetter-sqlite3ship Windows + macOS prebuilds.postinstallrunselectron-builder install-app-deps || echo "skipped"so a dev install on a machine without compilers still works.
See CONTRIBUTING.md. PRs welcome — anything from shell-detection fixes to new layout modes to TUI compatibility bug reports.
If you find something that looks like a security issue, don't open a public issue. See SECURITY.md for the private disclosure path.
MIT.