Skip to main content
Glama

Stuga

AI suggests. You decide.

Stuga is a workspace of documents and databases for teams that let AI agents write into their work. When Claude, Codex or any other MCP client edits a document or a table, the change arrives as a suggestion, marked up like tracked changes, and it lands only when a person accepts it. Edits people make go straight in.

It runs on a machine you own, such as a Mac mini in the office, a Linux server or a NAS: one Node.js process and Postgres, with no cloud in between. Everyone else uses it in a browser.

Download for Mac · Install with Docker · Connect an agent · Documentation

How agent edits work

  • A suggestion, not a silent write. Each agent's editing session on a document or database is a run. It records which agent made it, whose key it used, the client and model it reported, and every change it proposed. You accept or reject the changes one by one, in the document itself. Other people never see pending agent text, and their own editing carries on as usual.

  • Waiting is the default. A suggestion waits for a person for as long as that takes, and you are notified that it is there. Nothing applies it on a timer, and the agent is never blocked waiting on you. The owner of a document or database, or a workspace admin, can switch it to Let agents apply changes at once. Changes then land immediately and stay recorded, attributed and revertible.

  • One inbox. Review AI edits lists every run that needs someone, across documents and databases, with each agent's record of accepted and rejected changes beside it.

  • Who wrote this? An agent can ask a document who wrote which passage and whether a person has reviewed it, so one agent does not take another's unreviewed text as settled.

  • Narrow access, full audit. An app that signs in reaches only the workspaces you tick, and can be limited to reading. A key can also be confined to folders or given an expiry. Every call an agent makes over MCP, reads included, is in the audit log. An event feed and signed webhooks tell agents and other systems what changed.

Related MCP server: quartet

Your data stays on your machine

Stuga sends no telemetry, and nothing reaches us. The node makes outbound requests only for features in use on it: the AI providers a node admin configures, the notification sink and webhooks admins set up, the identity provider when an admin adds one, images an agent adds by URL, which the node downloads and serves itself, the metadata document of an app that signs in with one, and, when someone opens Create a workspace, the list of sample workspaces, and the sample they pick, from GitHub or a mirror the node is configured with. AI is off until an admin turns it on, and the model can run on the same machine.

An AI app you connect sees what its model reads and writes. A hosted one, such as Claude on the web, handles it on its vendor's servers.

One request is the node's own: once a day it asks GitHub for the list of Stuga releases, to tell its admins when a newer one is out. The request says nothing about the node, not even its version, and the comparison happens on the node. First-run setup asks before the first one is made, and Check for new versions under Settings → This node → About turns it off (docs/operations.md). On a Mac, Update now there downloads the release's package from GitHub, when an administrator chooses it.

Stuga does not encrypt data at rest. Documents, the database and keys are stored in plaintext on the node's disk, readable by anyone who can read that disk. Reaching a node from other devices, and what each way of doing that protects, is covered in docs/network-access.md.

What's in it

  • Documents people write together. Real-time editing in the browser (Tiptap over a Yjs CRDT), with presence, comments, @mentions and version history, and clients that re-sync cleanly after a dropped connection. Markdown files import as documents.

  • Databases with real SQL. Typed tables live beside your documents, and each database has its own SQLite store. Saved views filter, sort and group rows, every row can open as a page, and CSV imports in one step. People and agents query them with plain read-only SQL, not a lookalike filter language.

  • Search that follows permissions. Keyword and semantic search are fused in one SQL statement and filtered by access inside the query, so results follow sharing changes immediately and never include a document the searcher cannot open. Chinese and Japanese are split into words by dictionary, not character by character.

  • AI built in, and optional. A co-author in the editor, an assistant for tables, and Ask, which answers questions across your documents and databases with citations. Their edits go through the same review as any agent's. A node admin picks the provider: OpenAI, Anthropic, Gemini, DeepSeek, Mistral, Qwen and more, or Ollama on the same machine.

  • Sharing and sign-in. Workspaces, folders, per-document sharing, groups and guests. People join by invite link and sign in with a username, or through your own OpenID Connect provider.

  • Looks after itself. The node backs itself up every day and before every upgrade, and tells its admins when a new version is out.

Who it's for

  • Teams that have agents drafting plans, specs, knowledge bases or business tables, and want a person to approve what changes.

  • People who want that work on hardware they control, including the model if they choose.

  • Anyone wiring Claude Code, Codex or their own agents into documents a team shares.

Stuga is not a personal notes app. There is no native phone app and no plugin system; phones and other computers open it in a browser.

Install

  • A Mac with Apple silicon, on macOS 13 or later: download Stuga.pkg and open it (docs/install/macos.md).

  • Docker, on a Linux server or a NAS (x86-64 or arm64): curl -fsSL https://github.com/stuga-dev/stuga/releases/latest/download/install.sh | bash (docs/install/docker.md).

Then docs/getting-started.md walks through the first hour with a new node.

Connect your agents

Agents reach Stuga over MCP: the node serves /mcp, and stuga-mcp is a local stdio server that forwards to it for desktop clients. Settings → Your own AI in the app gives the setup for Claude Code, Claude Desktop, Codex, Antigravity and DeepSeek Harness, the Claude app's connector on a node with a public HTTPS address, and the URL and key any other MCP client needs. Most clients sign in through the browser, where you choose the workspaces the app may use and whether it may only read. A client holds one connection, called Stuga, that reaches every workspace you allowed, and each call names the one it acts in. API keys, the tools and how agent work appears in the run ledger are covered in docs/agents.md.

Status

Stuga is pre-1.0. Only the most recent release gets fixes (SECURITY.md), and CHANGELOG.md lists every release.

Documentation

Contributing

Issues and pull requests are welcome. CONTRIBUTING.md covers running Stuga from source, the tests and the conventions, and RELEASING.md how a release is cut. Contributions are accepted under a Contributor License Agreement (CLA.md); a bot asks on your first pull request. Report a vulnerability privately, as SECURITY.md describes.

License

AGPL-3.0-only, except integrations/, which is MIT; copyright notice in NOTICE. If you modify Stuga and offer it to others over a network, you share your changes under the same terms. The name and logo are not covered by the license: TRADEMARKS.md says how you may use them.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.
    241,394 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to perform safe, semantic edits on Markdown and DOCX documents through a normalized model with staging, diff review, and stale-edit protection.
    13
    MIT