Self-hosted knowledge

Your knowledge.
On your infrastructure.

Storm is a self-hosted, Markdown-native knowledge system with cross-platform clients and first-class access for AI agents through MCP.

install
curl -fsSL https://dewanshdt.github.io/Storm/install.sh | sudo sh

Debian / Ubuntu apt bootstrap (from the apt repo). Thensudo storm-server up.Full installation →

Rust serverFlutter clientMarkdownMCPSelf-hosted

One source of truth.

Storm keeps your knowledge as ordinary Markdown on storage you control. Devices connect to the same server, while the underlying files remain readable, portable, searchable, and easy to back up.

storage root
vaults/
├── personal/
├── work/
└── projects/
    └── storm.md

state/          ← indexes & registry (sibling, never inside vaults)

Your agents can work with your knowledge.

Storm exposes your vault through MCP, allowing compatible AI agents to search, read, create, and modify knowledge while the underlying source remains your Markdown vault. MCP is off by default; write tools require writable mode.

Tools12 when writable
ProtocolStreamable HTTP
Endpoint/mcp
  • list_vaults
  • get_vault
  • search
  • get_note
  • get_related_notes
  • list_tags
  • recent_notes
  • get_note_history
  • get_note_version
  • create_note
  • update_note
  • delete_note

Conceptual · not executed on this page

You

What did I decide about Storm’s sync architecture?

Storm MCP

search(…)
get_note(…)

Agent

You decided that the Rust server owns the canonical vault while clients synchronize through the server.

One knowledge layer. Many interfaces.

Flutter clients on macOS, Android, and web talk to a Rust sync server. The server owns merge, search, and history. AI applications reach the same vault through MCP.

macOSAndroidWeb
Storm server · Rust
Markdown vaults
Your storage / NAS
AI applicationsMCP

Your knowledge is just files.

Storm stores knowledge as Markdown rather than locking it inside a proprietary document format. Grep it, back it up, version it with the tools you already use.

vault
Daily/
└── 2026-08-11.md
Projects/
├── Storm/
└── Website/
Resources/
Archive/
.mdgitbackupgrepscripts

One client across your devices.

A single Flutter client provides the same Storm experience across desktop, mobile, and web. Download a native build, or open the web UI served by your server.

macOS

Apple Silicon desktop client.

Android

Direct APK for your phone.

Web

Bundled with storm-server.

Get a client →

Work wherever you are.

The server owns the canonical vault. Clients keep a local cache and an outbox. When two devices diverge, Storm merges when it can — and when it cannot, the conflict stays visible in the note file.

Synced

Your server is reachable. Local and remote agree.

Offline

Cached knowledge stays available. Creates and edits queue until the server returns.

Conflict

Another device changed this note. Conflicting content remains visible in the file — not a hidden sibling copy.

Run it on your own machine.

Install the server, then get a client for your device.

  1. 01
    Install the server

    Install storm-server on Debian or Ubuntu.

    Install command →
  2. 02
    Get a client

    Choose macOS, Android, or Web.

    Get a client →
  3. 03
    Connect

    Point the client at your Storm server and the token from/etc/storm/storm.env.

    Connection guide →
  4. 04
    Update later

    Refresh the server through apt when a new release lands. Restart so the new binary is listening.

    Update command →

Depth lives next to the code.

Storm does not ship a separate docs portal. Operator and architecture detail stays in the repository.