Skip to content
Minnow
GitHub
Download

Minnow apps

Minnow Shell (Electron + SPA) is a workspace-first stage: menubar, workspace picker, left app rail, and full-stage apps in #osAppsLayer. Chat lives inside Code at #/app/code/chat, not on a separate home surface. Default boot hash is #/workspaces; legacy #/desktop and #/app/chat rewrite in resolveLegacyHash.

Official product help opens from the menubar ? button (user manual, not this page). See Wiki and Brain.

Shell internals: src/os/. Exhaustive reference: Minnow Shell in ../context.md.

What ships

Code is the primary surface; the rest support work done there. All are core (always installed, always on):

AppRoutePresentation
Code#/app/code (+ overview, chat, dev-server)fullscreen
Research#/app/researchfullscreen
Models#/app/models/<section>fullscreen
Brain#/app/brain/<section>fullscreen
Issues#/app/issues (+ optional /<issueId>)fullscreen
Scheduler#/app/schedulerside panel overlay (stays over Code)
Settings#/app/settingsmenubar gear (not on app rail)

Settings opens from the menubar; the left rail lists the other six released apps (RAIL_PRIMARY_APP_IDS).

No optional app is released today, so onboarding Choose your apps and Settings → Apps show core “Always included” plus Coming soon. See Behind the release gate.

Workspace gate and Code

Cold boot lands on #/workspaces until the user picks a folder (workspace-gate.ts, welcome UI in welcome-page.ts). After pick, routing goes to #/app/code (overview or chat depending on hash).

Code reparents the chat stack into the main column: file tree, CodeMirror, terminal, git, dev servers, browser preview, and the session rail. File and git tools resolve under the open workspace root.

The browser preview pane (Electron only) renders workspace HTML and localhost URLs in a Chromium guest. F12 (or Ctrl+Shift+I / Cmd+Opt+I, or the </> toolbar button) toggles DevTools for the previewed page.

Models

Everything model-related in one place (#/app/models/<section>). Nine sections, labels from SECTION_LABELS in src/ui/models-page.ts:

Section idLabelContents
recommendRecommendationsHardware-aware suggestions (probe via /api/system/hardware, fit scoring)
installedInstalledDownloaded artifacts under ~/.minnow/models/
settingsLibraryHugging Face search/download; Serve locally via llama-server (auto-registers a provider)
voiceVoiceLocal Whisper (STT) / Qwen3-TTS (TTS) downloads + provider settings
providersProvidersEndpoint config; Ollama / LM Studio register existing endpoints when reachable
routingRoutingPer-role model routing
samplerSamplerSampler presets
thinkingThinkingReasoning controls
usageUsage & costToken usage totals

The last five are reparented Settings panelsreparentSettingsSectionIntoModels in src/ui/models-sections.ts moves the providers / model-routing / sampler / thinking / usage section nodes out of the Settings page and into Models. They keep their Settings section ids for search and deep links but do not appear in the Settings sidebar.

Research

Deep, multi-step web research. A sub-agent gathers and synthesizes sources behind a progress stepper. Reports save to a Library and can be reopened or discussed. Extracted source text is wrapped in untrusted-data fences before reaching the model.

Brain

Knowledge surface backed by the Brain wiki (CORTEX) at ~/.minnow/brain/: nested markdown pages with YAML frontmatter, hybrid keyword/vector retrieval, code-symbol indexing, ingest, and lint. Agent tools: brain_search, brain_read_page, brain_list, brain_write_page, brain_append_log, brain_ingest_source, plus code tools repo_map, find_symbol, who_calls, read_symbol. save_memory writes facts here.

Sections: Graph (home), Edit, Log, Schema, Proposals, Memories, Ingest, Lint, Code, Settings (embeddings, synthesis cadence, code index). Legacy #/settings/memory opens Memories.

Issues

Linear-style issue tracking (#/app/issues), fullscreen. List and board views, quick capture, taxonomy in Settings, and issue_* agent tools. Debug mode routes here (MIN-261). Code can embed the Issues view in the chat column without changing the hash to fullscreen Issues.

Scheduler

Local recurring agent jobs (~/.minnow/scheduler.json) as a full-stage app. Interval (60s minimum) or cron, chosen workspace/model, headless minnow run. Jobs only run while Minnow is open (npm start or the packaged shell).

Settings

Full-page sections at #/app/settings (legacy #/settings/<section> redirects). Sidebar groups from SETTINGS_NAV_GROUPS in src/ui/settings-page-types.ts:

GroupSections
AppGeneral (leads with App updates), Notifications, Appearance, Audio, About
AppsApps, Issues
AgentsAgents, Rules, Agent packs, Autopilot, Watchdog
Tools & integrationsSearch, Deep Research, Servers, Tools, Skills, Skills Library, Browser, MCP servers, Language servers, Editor, Webhooks
AdvancedHealth & diagnostics, Board testing

SettingsSectionId also defines providers, usage, model-routing, sampler, thinking, prompting, modes, work-agents, and sub-agents. These are not in every nav group: the first five reparent into Models; the rest are reachable via search or direct hash. Memory settings live in Brain. Search indexes every section and deep-links across apps.


Behind the release gate

Each app has developer releaseState (released | hidden) and core / optional availability (src/os/app-registry.ts). Hidden apps stay in the tree and tests, but are omitted from onboarding, Settings, the app rail, menubar switcher, shortcuts, notifications, and launch_minnow_app. parseOsHash still recognizes #/app/<appId> for every registry id; applyRoute blocks developer-hidden apps (redirect to #/workspaces, no toast) or user-disabled optional apps (toast + redirect).

Currently hidden (MIN-471):

AppStatus
CompareBlind A/B across 2–6 models, win-rate history under ~/.minnow/compare/.
Benchmarking (bench)In-app benchmark battery + run history.
ExpertsExperts’ Lab roster of specialist sandbox chats.

No catalog entries carry an appId. Email and Calendar apps were removed (not gated).

Removed, not gated: Reef mini-app and mode (MIN-473); Email and Calendar apps.


Operating modes

Modes change system prompt and tool policy (src/chat/modes/registry.ts). Four appear in the composer strip:

ModeBehavior
GeneralEveryday Q&A; all enabled tools with approval.
BuildDefault development mode; broad tool access.
PlanPlan and analyze; destructive file/git tools denied (plan-write guard).
DebugInvestigate; file/triage via Issues and issue_* tools.

Entered elsewhere (not in the strip):

ModeEntered from
OrchestrateOrchestrate hub in Code sidebar / boards.
Super PlanCaret under Plan, or Orchestrate plan screen.
OnboardingFirst-run wizard only.

Persisted 'desktop' and 'email' remaps to General (normalizeModeId); they are not live registry entries.

Reef mode was removed in MIN-473.

---