Open-source desktop agent built around your folder — asks before it acts. Cloud or local models.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
An open-source desktop agent built around your folder: always in view, and
nothing happens in it without asking. Cloud or local models, no account, no
telemetry.
Works with OpenAI · Anthropic · Google Gemini · Ollama · any
OpenAI-compatible API (LM Studio, MLX-LM, llama.cpp, vLLM, OpenRouter …)
Extensible with Agent Skills (SKILL.md) · MCP servers (stdio) · built-in
workspace tools · any CLI on your machine
Runs on macOS (Apple Silicon) · Windows (x64) · Linux (x64)
Status: a personal open-source project — no company behind it, no paid tier.
Interfaces and configuration may still change.檢視完整 README ↗An open-source desktop agent built around your folder: always in view. Cloud or local models, no account, no telemetry.
Download · User manual · Website · Why Snotra? · Build from source · Deutsch
Snotra Agent is the desktop app of the Snotra AI platform. Until October 2026 the app itself was called Snotra AI — see Old versions in the manual.
Works with OpenAI · Anthropic · Google Gemini · Ollama · any OpenAI-compatible API (LM Studio, MLX-LM, llama.cpp, vLLM, OpenRouter …)
Extensible with Agent Skills (SKILL.md) · MCP servers (local or over
Streamable HTTP) · built-in workspace tools · any CLI on your machine
Runs on macOS (Apple Silicon) · Windows (x64) · Linux (x64)
Status: a personal open-source project — no company behind it, no paid tier. Interfaces and configuration may still change.
Using Snotra? The user manual explains how to install it, connect a model, chat, stay in control of what it may do, and adapt it — step by step, with screenshots. This page is the overview and the developer part.
Get the latest release from the releases page:
| System | File |
|---|---|
| macOS (Apple Silicon) | Snotra-Agent-<version>-mac-arm64.dmg |
| Windows (x64) | Snotra-Agent-<version>-win-x64.zip |
| Linux (x64) | .deb (recommended), .AppImage or .tar.gz — see Install Snotra Agent |
Snotra Agent.exe is signed in the developer's
name (#911). The
certificate is new, so SmartScreen may still warn on first launch until it
has built up a reputation. Unzip, start Snotra Agent.exe, check that the
publisher reads Konrad Krafft, then More info › Run anyway.Open source, any model, MCP and Skills are what every agent desktop offers by now. What Snotra does differently is how it works in your folder and how carefully it acts there. Compared as of September 2026 — the field moves fast, corrections welcome.
What Snotra doesn't have yet: a sandbox on Windows (on macOS and Linux, commands and Python run isolated — see Run commands in the sandbox), and OAuth sign-in for remote MCP servers — they connect with an API key or token in a header.
A word from the author. I started out wanting to understand agentic work — what actually travels between a language model and an agent harness — and the experiment kept growing because trying out one more capability is fun. Cursor, Claude Code and ChatGPT are the obvious role models, but each concentrates on its own models. An agent desktop that lets you attach any model you like — local ones above all — is what kept me working on this.
It is also meant as a foundation: a tool developers can use to try agentic working for themselves, and to build agents for specific use cases — in a business department or at home — on top of its agent harness. The architecture is cut so that the backend can be separated from the frontend.
The name comes from Norse mythology: Snotra is the goddess of wisdom and prudence — an assistant that knows the context of its workspace and acts deliberately.
What is open lives on the
GitHub project board and in
GitHub Issues. What the app can
do today is described in the user manual.
Want to contribute? See CONTRIBUTING.md.
marked and DOMPurify for Markdown@fontsource/inter as the typeface.nvmrc; with nvm: nvm use)# Clone the repository
git clone [email protected]:<your-user>/snotra.git
cd snotra
# Install dependencies
npm install
# Start the app in development mode
npm start
On first start you can pick a provider in the settings and enter your API key. The key is stored encrypted in your operating system's user profile — it does not end up in the project folder or in the repository.
# macOS (Apple Silicon) – DMG
npm run make
# Linux (x64) – DEB + AppImage; needs dpkg, fakeroot and mksquashfs
npm run make:linux
# Package only, without installers
npm run package # macOS arm64
npm run package:win # Windows x64
npm run package:linux # Linux x64
The finished artifacts land in out/ (excluded via .gitignore).
Every shortcut Snotra adds to the usual system ones — in the window, the chat input, the file tree and the dialogs — is listed in the manual under Find a keyboard shortcut.
Up to v1.0.4: on first start the app
copies settings, presets, folder history and chat history from the old userData
folder; the old folder stays behind unchanged as a backup. On macOS the API keys
have to be entered once more, because the keychain entry of Electron's
safeStorage is tied to the app name; the settings then show "enter the key
again". A chat history that can no longer be decrypted as a result is
preserved as chat-history.json.undecryptable-<timestamp> instead of being
overwritten. A start with --user-data-dir uses the given folder as it is and
copies nothing into it.
.
├── src/
│ ├── application/ transport-agnostic application core (chat, ports)
│ │ ├── chat/ chat engine, history trimming
│ │ └── ports/ LLM, tool, preferences and other core ports
│ ├── main/ Electron main process
│ │ ├── composition/ composition root (wiring of all adapters)
│ │ ├── adapters/ port implementations (LLM, tools, storage, FS, …)
│ │ ├── ports/ infrastructure port interfaces
│ │ ├── ipc/ thin IPC handlers
│ │ ├── providers/ LLM provider implementations
│ │ ├── services/ infrastructure (storage, FS, speech, updates, presentation)
│ │ └── tools/ workspace tool registry
│ ├── preload/ secure bridge between main and renderer (bundled)
│ ├── renderer/ UI (HTML, CSS, JS) — pure presentation layer
│ └── shared/ contracts, IPC channels, shared presentation helpers
├── system-skills/ built-in system skills (one `SKILL.md` per directory)
├── test/ tests (node:test), including architecture boundary guards
├── e2e/ smoke test against the running Electron app
├── scripts/ build helpers (vendor sync for the renderer, icon build)
├── docs/ architecture (`architecture.md`, SVG diagrams), release, security concept
├── assets/icon/ SVG sources of the app icon (macOS and Windows layout)
├── assets/readme/ demo GIF and stills for the README (light and dark)
├── icon.icns/.ico/.png app icons for macOS / Windows / Linux, generated via `node scripts/build-icons.js`
└── package.json
Details on the layered architecture: docs/architecture/architecture.md.
Which action asks for your approval in which mode, and what the sandbox changes:
The details are in the security concept.
skill:<name>/… (see Use skills;
nothing is ever written there) — and the two execution tools run_python
and shell_execute do not know this boundary at all: it is not Snotra that
accesses files there, but the interpreter or the shell. Both are therefore off
as shipped and, outside Auto, need an approval before every run. On macOS and Linux they run
in a sandbox that confines writes to the project folder and limits the network
to the approved domains (see Run commands in the sandbox); on Windows they do not.Build prerequisites, test commands and the branch/PR conventions are in
CONTRIBUTING.md.
Apache License 2.0 — see LICENSE.
Copyright © 2026 Konrad Krafft.