sage platform · v0.2

One client. Every surface.

SAGE is the operating layer over your devices, not another app on top of them. Every install joins the mesh — data, skills, sessions all addressable from wherever you are.

Download

Windows

Tauri 2.x · x86_64 · NSIS installer v0.2.0 · CI-built on windows-latest Download installer → Or raw .exe →

Android

Capacitor · ARM64/ARMv7 · APK v0.7 · 18 MB · S25 Ultra + Note 9 verified Download APK →

macOS

Tauri 2.x · Universal · .dmg Planned cycle 3 Coming soon →

Linux

Tauri 2.x · x86_64 · AppImage / .deb Planned cycle 3 Coming soon →

Pair this device

When you launch the SAGE client for the first time, it shows a one-time pair code. Paste it here to register the device on the mesh. (RFC 8628 device-code flow ships cycle 3 — today this submits to register_device on sage-core-mcp directly.)

What ships in v0.2

Shared SAGE shell

Same sliding-panel frame as the S25 Ultra Android app — extracted to @sage/shell and consumed by every client.

Cross-PC dispatch

Type a prompt anywhere; spawn a Claude Code session on whichever node should handle it. Bridge + HTTP transport, port 8475.

Device registry

Every install registers itself in D1. The mesh knows what's online, what kind of surface it is, and when you last touched it.

Goal-mode sessions

Dispatch with mode: goal so the spawned session uses Claude Code's /goal primitive — locked objectives, autonomous execution.

Cross-PC dispatch quickstart

# Local dispatcher must be running on port 8475:
$ node services/session-dispatcher/src/index.js

# Dispatch to a peer node from any SAGE client:
$ curl -X POST http://localhost:8475/dispatch \\
  -H 'Content-Type: application/json' \\
  -d '{"target":"SAGENODE","cwd":"C:/SAGE","prompt":"build the menu-builder","mode":"goal"}'