Persistent Sage is a privacy-oriented desktop AI companion: multi-thread chat, long-term Memory Anchor storage, optional agent tools, customizable companion personalities, Pulse scheduled check-ins, vision image attachments, and Coding mode — a repo-scoped development workspace with editor, terminal, and git tools—all in a local-first Tauri 2 application.
Repository: github.com/g00siferdev-py/persistent-sage
Status: Persistent Sage 2.1 — feedback welcome via GitHub Issues
Version 2.1.0 — Companion + Coding modes, Microsoft Store path, and GitHub direct-download installers.
| Step | Action |
|---|---|
| 1 | Microsoft Store — search for Persistent Sage (when listed), or use GitHub Releases → Persistent.Sage_*_x64-setup.exe. See docs/INSTALL-WINDOWS.md. |
| 2 | Build from source — git clone https://github.com/g00siferdev-py/persistent-sage.git && cd persistent-sage → docs/INSTALL.md. |
| 3 | Configure — Settings → Provider (API key + model), then start a chat |
| 4 | Update — Store installs: Microsoft Store → Library → Get updates. GitHub installs: Settings → General → Updates |
| 5 | Report — Settings → General → Send feedback or GitHub Issues with OS, app version, provider, steps to reproduce |
| 6 | Support development — optional donations via docs/SUPPORT.md; code contributions via CONTRIBUTING.md |
Maintainers: publish installers → docs/PUBLISH.md; MSIX → docs/MICROSOFT-STORE.md; CI → docs/BUILD-CI.md.
| Guide | Description |
|---|---|
| docs/INSTALL.md | Fresh install — prerequisites, clone, build, first-run setup |
| docs/INSTALL-WINDOWS.md | Windows users — download from Releases, installer, portable USB |
| docs/PUBLISH.md | Maintainers — publish builds to GitHub Releases |
| docs/MICROSOFT-STORE.md | Maintainers — MSIX packaging for Microsoft Store |
| docs/BUILD-CI.md | CI Windows builds (Actions) |
| docs/CODING-MODE.md | Coding mode (v2) — repos, IDE, terminal, agent tools, GitHub PAT |
| docs/USER-GUIDE.md | Day-to-day usage — Companion + Coding, memory, settings, Pulse |
| docs/PRODUCT-KNOWLEDGE-BASE.md | Full product KB for marketing & support agents |
| docs/DATA-AND-PRIVACY.md | What is stored locally; API keys encrypted, database not encrypted |
| PRIVACY.md | Public privacy policy |
| docs/SUPPORT.md | Support development — optional donations, issues, contributing |
| docs/SIGNING-AND-UPDATES.md | Updater behavior and SignPath readiness |
| docs/ARCHITECTURE.md | Technical overview for developers |
| docs/DEVELOPMENT.md | Dev workflow and pre-push checklist |
| CHANGELOG.md | Release notes |
| docs/REBRAND.md | Codename, rebrand, and legacy data migration |
| PERSISTENT-SAGE-STATUS.md | Engineering status |
| CONTRIBUTING.md | How to test and contribute |
Settings → Companion includes Import OpenClaw markdown…, but the most reliable way to move a mature OpenClaw personality into Persistent Sage today is:
- Copy
IDENTITY.md,SOUL.md,JOURNAL.md,USER.md, andMEMORY.mdinto Persistent Sage’sworkspace/folder (enable workspace tools). - Prompt the companion to read those files and update
personality.jsonvia personality self-edit (enable in Settings → Tools). - Remove the
.mdfiles fromworkspace/when done.
We are still improving one-click migration; see docs/USER-GUIDE.md § Migrating from OpenClaw and CHANGELOG.md for the exact prompt and details.
| Data | Where | Encrypted? |
|---|---|---|
| Chats, anchors, memory | nova_memory.sqlite on your disk |
No (local file) |
| API keys | settings.json + .nova_crypto/ |
Yes |
| Personalities | personality.json |
No |
After you build and run Persistent Sage, nothing is stored on a Persistent Sage-operated cloud. Messages go only to the LLM provider you configure (and optional tool URLs if you enable agent tools). See PRIVACY.md and docs/DATA-AND-PRIVACY.md for the full picture.
- Coding mode (v2) — Git repos, editor, terminal, coding agent, playground, notepad, Agent Action Stream. See docs/CODING-MODE.md.
- UX (2.1) — Message timestamps, Help menu, token counter, light/dark theme, cache manager, abort turn, unified Companion↔Coding context.
- Memory Anchor — SQLite conversations, messages, anchors, projects, and preferences; hybrid FTS recall and startup briefings.
- Companion profiles — Multiple personalities with live system-prompt preview; Persistent Sage JSON and OpenClaw markdown import; optional agent self-edit of
personality.json. - Providers — OpenAI, Google Gemini, xAI Grok, Ollama (local), Ollama Cloud, Anthropic, or offline placeholder.
- Agent tools (opt-in) — Web search, URL fetch, headless
fetch_browser, HTTPShttp_request, sandboxed workspace files, optional database query. - Pulse — Timer-driven check-ins that run as normal chat turns in your selected sidebar thread.
- Vision — Attach images in the composer; multimodal payloads for supported models.
- In-app updates — Store updates via Microsoft Store; GitHub installs use Tauri updater on Releases.
- Send feedback — Settings buttons open prefilled GitHub Issues without attaching private chats or logs.
- Optional donations — PayPal / Cash App links in footer and onboarding (no feature unlock).
- Portable layouts —
PERSISTENT_SAGE_DATA_DIRandPERSISTENT_SAGE_PORTABLE(legacyNOVA_*also works) for custom or USB data locations.
git clone https://github.com/g00siferdev-py/persistent-sage.git
cd persistent-sage
npm install
npm run tauri devFirst launch creates local data under your OS app directory (or PERSISTENT_SAGE_DATA_DIR if set). Configure Settings → Provider, then start a chat.
New to the stack? Follow the step-by-step guide in docs/INSTALL.md.
| Variable | Purpose |
|---|---|
PERSISTENT_SAGE_DATA_DIR |
Absolute path for nova_memory.sqlite, settings, personalities, workspace, attachments (legacy NOVA_DATA_DIR still works) |
PERSISTENT_SAGE_PORTABLE=1 |
Store data in {executable}/data/ (legacy NOVA_PORTABLE=1 also works) |
PERSISTENT_SAGE_CHROME_PATH |
Chrome/Chromium/Edge binary for fetch_browser (legacy NOVA_CHROME_PATH also works) |
PERSISTENT_SAGE_CHROME_NO_SANDBOX |
Set to 1 in Docker or locked-down environments |
| (unset) | OS default application data location |
export PERSISTENT_SAGE_DATA_DIR="$HOME/PersistentSageData"
mkdir -p "$PERSISTENT_SAGE_DATA_DIR"
npm run tauri dev| Command | Description |
|---|---|
npm install |
Install dependencies |
npm run tauri dev |
Run Persistent Sage (desktop + Rust backend) |
npm run tauri build |
Release build and installers |
npm run build |
Frontend typecheck and Vite production build |
npm run dev |
Vite only — not sufficient for full Persistent Sage |
| Layer | Technologies |
|---|---|
| Desktop | Tauri 2 |
| UI | React 19, TypeScript, Vite 7, Tailwind CSS v4 |
| Backend | Rust 1.77+, rusqlite, reqwest, encrypted settings |
| Issue | Solution |
|---|---|
| Chat does nothing | Use npm run tauri dev, not npm run dev |
| Placeholder replies | Settings → Provider → live backend + API key |
| Model ignores images | Use a vision model; on Ollama, tools are off for image turns |
fetch_browser fails |
Install Chrome/Chromium or set PERSISTENT_SAGE_CHROME_PATH |
| Linux build errors | Tauri prerequisites |
More: docs/INSTALL.md § Troubleshooting
Persistent Sage 2.1.0 ships Companion mode (memory anchor, Pulse, artifacts, agent tools) plus Coding mode (repo IDE, terminal, git, playground, notepad). 2.1 adds UX polish: timestamps, Help menu, token counter, light/dark theme, cache manager, unified context, and more. Dual update paths: Microsoft Store + GitHub. See PERSISTENT-SAGE-STATUS.md and CHANGELOG.md.
Maintainer: g00siferdev-py
MIT License — Copyright (c) 2026 g00siferdev-py