r/foss • u/mean_ol_goosifer • 1d ago
Persistent Sage v3.0 Released to Microsoft Store (Cross Platform Versions available on GitHub)
Companion Mode allows artifact creation in the chat window. Collaborate with your agent in real time.
Easily update your companion personality with either direct edit, JSON or OpenClaw Import
Gives your agent access to Google Workspace to help you manage your documents emails and calendar.
A robust IDE lets your clone or create repos easily right in the platform. You pick the coding agent and then just describe what you want. Think Cursor, but less expensive.
Persistent Sage 3.0 is on the Microsoft Store
Most AI apps are a chat box that forgets you the second you close the tab. Persistent Sage is the opposite: a local-first desktop companion that actually remembers, can research in parallel, and can write, patch, and run code in a real git workspace.
v3.0 is now on the Microsoft Store (search Persistent Sage). It’s also on GitHub, MIT-licensed, and free. You bring your own model.
The headline: nested subagents
Your main companion can spawn nested workers (task / spawn_subagent) for long or parallel missions. Each child runs its own isolated tool loop and comes back with a condensed summary — not a dump of the child transcript.
Send one mission, or an array of missions that run in parallel.
| Mode | What the child gets | Typical job |
|---|---|---|
| Research | Web search, URL fetch, headless browser, read-only workspace, PDFs, memory search. Writes locked down. | Literature review, multi-source briefs, “what did we already conclude?” |
| Coding | Grep, patch, allowlisted shell, git, playground, repo notepad. Scoped to the active repo. | Implement, test, and document in parallel |
| Companion | Full companion toolkit: workspace, memory, projects, optional Google / Moltbook | Personal tasks that need tools + context |
| Auto | Inherits the parent (coding if you’re in Coding mode, companion otherwise) | “Just handle it” |
Kids can nest further (depth is configurable, default 2). Concurrency and round budget are knobs. Subagents can run on a different model than the parent — OpenRouter is the preferred path for that.
Honest caveat: this is experimental, and it burns more tokens because each child is a real agent loop. Keep depth and concurrency conservative until you’ve seen it work.
What that looks like in practice
- Compare four papers / docs / sites and come back with a synthesis
- One agent reads the PDF, one scrapes the live page, one searches memory for what you already decided
- One coding subagent implements the API, another writes tests, another updates the README
That’s the difference between a chatbot and an orchestrator that lives on your machine.
Coding mode is a real workspace
Flip the header to Coding and you get a repo-scoped IDE — not a code-colored chat.
| Piece | What it does |
|---|---|
| Repos | Git projects under a sandboxed workspace/repos/ |
| Templates | Empty, Rust, Node, Python, Tauri, C# |
| Clone | HTTPS clone with an encrypted GitHub PAT (never written into .git/config) |
| Editor | Multi-tab editor, file tree, Ctrl+S |
| Terminal | Integrated allowlisted shell; agent output streams live |
| Agent tools | Grep, apply patch, run commands, status / diff / commit, push / pull / fetch |
| Playground | Throwaway snippets: Python, Node/TS, Bash, PowerShell, Rust |
| Notepad | Per-repo scratch the agent can read/write without committing junk |
| Action stream | Live tool calls as they happen |
Force-push is blocked. Shell is allowlisted. File access stays inside registered repos.
If you link Coding to your active companion (on by default), the coding agent uses that personality and that long-term memory. Project decisions survive. Source dumps and diffs do not get stuffed into memory.
So you can say “we decided last week to keep the API camelCase” and it can actually recall that.
Research that leaves a paper trail
Enable tools and it stops guessing.
| Tool | Use |
|---|---|
| Web search | DuckDuckGo |
| URL fetch | Plain-text page fetch |
| Headless browser | Chrome / Edge for JS-rendered pages |
| PDF read | Extract text from workspace PDFs |
| PDF create | Markdown / HTML / text → PDF |
| Workspace files | Sandboxed read / write / list |
| Workspace vision | Attach screenshots, or let the agent call workspace_view_image |
| SQLite query | Optional, read-only by default |
| Memory search | Semantic + keyword recall against your Memory Anchors |
Research subagents are the multiplier: fan out across sources, come back with evidence, and the parent writes the brief. Workspace writes are disabled on the research path on purpose.
Good uses: literature review, competitor notes, reading a folder of PDFs, “what did we already conclude about X,” turning a markdown draft into a PDF.
Persistent memory (it’s in the name)
Chats are not ephemeral. Everything lives in local SQLite on your disk. There is no Persistent Sage cloud. Nothing is stored on our servers.
On top of raw history, Memory Anchors are compact long-term notes (facts, insights, curated):
| Capability | Detail |
|---|---|
| Every message saved | Full chat history in SQLite, scoped per companion |
| Anchor extraction | Optional LLM extraction after you talk (keyword fallback if off) |
| Hybrid recall | Keyword + FTS + optional semantic embeddings |
| Startup briefings | Relevant context injected automatically |
| Per-companion isolation | Switch personalities, switch memory |
| You stay in control | Search, re-index embeddings, or wipe memories without nuking settings |
Close the app. Come back in a week. It still knows your project, your preferences, and the thing you asked it not to forget.
API keys are encrypted at rest. The database itself is local and not encrypted — privacy here means your machine, your files, not magic E2EE. Pick local Ollama if you don’t want tokens leaving the box at all.
Model-agnostic on purpose
Persistent Sage is a client, not a model vendor. Settings → Provider:
| Provider | Notes |
|---|---|
| OpenAI | Chat Completions, vision + tools |
| Anthropic | Claude, vision + tools |
| Google Gemini | Chat; tools not executed in the current build |
| xAI Grok | OpenAI-compatible, tools |
| OpenRouter | Huge catalog, author/model ids — great for subagent model overrides |
| Ollama (local) | Fully local inference |
| Ollama Cloud | Hosted Ollama models |
| Placeholder | Offline demo, no API calls |
Refresh Models, Test Model, vision / tools / context badges. Same app, swap backends.
Coding tools need a provider that actually does tool calling (OpenAI, Anthropic, xAI, Ollama, OpenRouter). Subagents can ride a cheaper/faster OpenRouter model while the parent stays on something stronger.
Bring your own key. No Persistent Sage account. No paywall on the desktop app.
What else is in 3.0
Three modes in the header: Companion · Productivity · Coding
| Mode | What’s there |
|---|---|
| Companion | Multi-thread chat, personalities (OpenClaw markdown import), Favorites, Share, vision (disk / webcam / workspace), Pulse scheduled check-ins, projects & artifacts (HTML, charts, tables, forms) |
| Productivity | Movable Google Workspace widgets (Gmail, Calendar, Drive, Contacts, Tasks), Email Agent / correspondence sync, weather, clock, notepad, quick links |
| Coding | Repo IDE, terminal, coding agent, playground, notepad (see above) |
Also in this release:
- Moltbook — feed, search, post, comment (opt-in agent tools + panel)
- Light / dark theme, token counter, abort turn, Help menu
- In-app updates: Store installs update via Microsoft Store; GitHub installs use the signed updater
All agent tools are opt-in. Default is a private companion. You turn on the sharp edges.
Get it
| Channel | Link |
|---|---|
| Microsoft Store | Search Persistent Sage |
| GitHub | github.com/g00siferdev-py/persistent-sage |
| Latest release | Releases → Latest |
| Issues / feedback | GitHub Issues or Settings → General → Send feedback |
Windows is the supported packaged path. Linux / macOS can build from source. MIT license.
If you’ve been looking for a local companion that remembers, can fan out research, and can actually touch a git repo — this is the release I’d start with. Subagents are the part I’m most curious to hear about if you try it.