atomic is a free, open source documentation & knowledge base project written in Rust and released under MIT. It has 2,001 GitHub stars, 143 forks and 34 open issues, and was last pushed 1 months ago. On this registry it ranks #62 of 100 tracked projects in Documentation & Knowledge Base, with 5 head-to-head comparisons available. It gained 32 stars over the last 30 tracked days.

What is atomic?

Atomic is a self-hosted, MIT-licensed personal knowledge base written in Rust that turns markdown notes into a semantically connected, AI-augmented knowledge graph, and it is built for individuals and small teams who want to own their notes and their data instead of renting them from a hosted service.

What it is

Atomic lives in the Rust ecosystem and ships as a Tauri desktop application, a headless server that runs under Docker or Fly.io, and an accompanying web frontend. Its core unit is the atom: a markdown note carrying hierarchical tags and source URLs that the system automatically chunks, embeds, and links to other atoms by semantic similarity. A shared registry lets a single installation hold multiple knowledge bases rather than one flat pile of files.

The concrete problem it solves is the gap between a folder of markdown files and useful retrieval. Plain markdown stores, and the keyword search that usually accompanies them, match strings rather than meaning, and the connections between notes stay whatever the author remembered to type by hand. Atomic replaces that keyword search with vector search backed by sqlite-vec, and replaces hand-maintained linking with similarity-derived links, so notes become a queryable graph. AI provider configuration is the engine behind the embedding step, and it can point at OpenRouter, a local Ollama instance, or any OpenAI-compatible endpoint.

Key capabilities

  • Atoms — markdown notes with hierarchical tagging, source URLs, and automatic chunking into embedded fragments.
  • Semantic Search — vector search over the knowledge base using sqlite-vec, described in the README as finding by meaning rather than keywords.
  • Canvas — a force-directed spatial visualization where semantic similarity determines node layout.
  • Wiki Synthesis — LLM-generated articles assembled from your notes with inline citations.
  • Reports — scheduled research tasks producing recurring cited findings such as daily briefings, contradiction scans, and open-question tracking.
  • Chat — an agentic RAG interface that searches the knowledge base during a conversation.
  • MCP Server — exposes the knowledge base to Claude and other AI tools over the Model Context Protocol.
  • Multi-Database — several knowledge bases managed through a shared registry, with RSS feed syncing and a Chrome browser extension for web capture.

Who uses it and how

  • Individual researchers and writers running the desktop app on macOS, Linux, or Windows, with the setup wizard handling AI provider configuration on first launch.
  • Self-hosters running docker compose up -d, which starts the API server, the web frontend, and an nginx reverse proxy, then claiming the instance at http://localhost:8080.
  • Operators who already run Caddy or Traefik and skip the bundled proxy, routing traffic to the server and web containers directly, as shown in docker/nginx.conf.
  • Fly.io users deploying with fly launch --copy-config --no-deploy and a persistent volume created via fly volumes create atomic_data.
  • Mobile and AI-tool workflows: a native SwiftUI iOS client for reading and writing atoms, and MCP access from Claude.

Getting started

Install the desktop build from GitHub Releases for macOS, Linux, or Windows, or clone the repository, write ATOMIC_SETUP_TOKEN into .env, and run docker compose up -d. Atomic Cloud is also offered as a hosted option at your own subdomain with a free trial.

How it compares

No comparable paid products are named in the facts for this registry, and no sibling tools are listed either, so Atomic stands alone here and is best understood through its own deployment choice: desktop binary, self-hosted container stack, or the Atomic Cloud hosted instance. The README states that everything continues to self-host forever regardless of which option is chosen.

When to use it — and when not to

Pick Atomic if you want note ownership, semantic retrieval, and are willing to run a three-container stack or configure an AI provider through OpenRouter, Ollama, or another OpenAI-compatible endpoint — without embeddings, the semantic search, wiki synthesis, and auto-tagging features have nothing to work from. Avoid it if you want a zero-configuration notes app, if running Docker, a reverse proxy, and persistent volumes is out of scope, or if a hosted-only tool with no local data path is acceptable. The trade-off is explicit: the self-hosted route puts operational responsibility for the server, the web frontend, and the proxy on the person deploying it.

project readme (upstream, from github) — read inline

Discord Desktop App Server Image Web Image Atomic Cloud

☁️ Atomic Cloud — Atomic, hosted at your own subdomain. Try it out for free. Everything below still self-hosts forever.

A personal knowledge base that turns markdown notes into a semantically-connected, AI-augmented knowledge graph.

Atomic stores knowledge as atoms — markdown notes that are automatically chunked, embedded, tagged, and linked by semantic similarity. Your atoms can be synthesized into wiki articles, explored on a spatial canvas, and queried through an agentic chat interface.

https://github.com/user-attachments/assets/1992fcf7-1d6b-41b1-a177-2da2e8b57676

Atom Viewer

Wiki synthesis — LLM-generated articles with inline citations

Wiki Synthesis

Canvas — view your knowledge on an interactive graph

Canvas

Semantic search — find by meaning, not keywords

Semantic Search

Features

  • Atoms — Markdown notes with hierarchical tagging, source URLs, and automatic chunking
  • Semantic Search — Vector search over your knowledge base using sqlite-vec
  • Canvas — Force-directed spatial visualization where semantic similarity determines layout
  • Wiki Synthesis — LLM-generated articles with inline citations, built from your notes
  • Reports — Scheduled research tasks that turn your atoms into recurring cited findings (daily briefings, contradiction scans, open-question tracking)
  • Chat — Agentic RAG interface that searches your knowledge base during conversation
  • Auto-Tagging — LLM-powered tag extraction organized into hierarchical categories
  • Multiple AI Providers — OpenRouter, Ollama, or any OpenAI-compatible provider for embeddings and LLMs
  • RSS Feeds — Subscribe to feeds and automatically sync new articles as atoms
  • Browser Extension — Capture web content directly into Atomic (Chrome Web Store)
  • MCP Server — Expose your knowledge base to Claude and other AI tools
  • Multi-Database — Multiple knowledge bases with a shared registry
  • iOS App — Native SwiftUI client for reading and writing atoms on mobile (App Store)

Getting Started

Atomic runs as a desktop app (Tauri), a headless server (Docker/Fly.io), or both.

Desktop App

Download the latest release for your platform from GitHub Releases (macOS, Linux, Windows).

On first launch, the setup wizard walks you through AI provider configuration.

Self-Host with Docker Compose

git clone https://github.com/kenforthewin/atomic.git
cd atomic
echo "ATOMIC_SETUP_TOKEN=$(openssl rand -base64 24)" > .env
docker compose up -d

This starts three services: the API server, the web frontend, and an nginx reverse proxy. Open http://localhost:8080 and claim your instance through the setup wizard with the ATOMIC_SETUP_TOKEN value from .env.

The proxy service is provided for convenience — if you already run your own reverse proxy (Caddy, Traefik, etc.), you can skip it and route traffic to the server and web containers directly. See docker/nginx.conf for an example configuration.

Deploy to Fly.io

cp fly.toml.example fly.toml
fly launch --copy-config --no-deploy
fly volumes create atomic_data --region <your-region> --size 1
fly secrets set ATOMIC_SETUP_TOKEN="$(openssl rand -base64 24)"
fly deploy

Open https://your-app.fly.dev and claim your instance with the setup token. The public URL for OAuth/MCP is auto-detected from the Fly app name.

Standalone Server

ATOMIC_SETUP_TOKEN="$(openssl rand -base64 24)" \
cargo run -p atomic-server -- --data-dir ./data serve --port 8080

On first run, enter ATOMIC_SETUP_TOKEN in the setup wizard, or create an API token directly:

cargo run -p atomic-server -- --data-dir ./data token create --name default

AI Provider Setup

Atomic needs an AI provider for embeddings, tagging, wiki generation, and chat.

  • OpenRouter — Get an API key from openrouter.ai. Supports separate model selection for embedding, tagging, wiki, and chat.
  • Ollama — Install Ollama and pull models (e.g., ollama pull nomic-embed-text). Atomic auto-discovers available models.
  • OpenAI-compatible — Any provider with an OpenAI-compatible API (e.g., OpenAI, Azure OpenAI, Together, Groq). Configure the base URL and API key.

Configure via the setup wizard on first launch, or later in Settings.

Browser Extension

The Atomic Web Clipper captures web content as atoms. Install from the Chrome Web Store, then configure your server URL and API token in the extension options.

Captures are queued offline and synced when the server is available.

MCP Server

Atomic exposes an MCP endpoint for Claude and other AI tools to search, read, create, update, and ingest atoms.

Desktop App (Local Mode)

The desktop app bundles atomic-mcp-bridge, a stdio-to-HTTP bridge that reads the local auth token automatically. No token configuration needed — just point your MCP client at the binary:

{
  "mcpServers": {
    "atomic": {
      "command": "/Applications/Atomic.app/Contents/MacOS/atomic-mcp-bridge"
    }
  }
}

The app's Settings > Integrations page shows the exact path for your system.

Remote / Self-Hosted

For remote servers or the web app, connect via the HTTP endpoint at /mcp with a Bearer token:

{
  "mcpServers": {
    "atomic": {
      "type": "url",
      "url": "https://your-server.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Create a token from Settings > Connection > API Tokens, or via the CLI:

atomic-server token create --name "claude"

Available tools: search and retrieval (semantic_search, read_atom, find_similar), browsing (list_tags, list_atoms, list_databases), synthesized knowledge (list_wikis, get_wiki, list_reports, get_report_findings), writing (create_atom, ingest_url, update_atom, edit_atom), and ChatGPT-compatible search/fetch aliases. See the MCP Server guide for per-client setup (claude.ai, Claude Code, Cursor, ChatGPT).

Architecture

All business logic lives in atomic-core, a standalone Rust crate with no framework dependencies. atomic-server wraps it with a REST API, WebSocket events, and an embedded MCP endpoint. Every client connects to atomic-server over HTTP:

                    +------------------+
                    |   atomic-core    |
                    |   (all logic)    |
                    +--------+---------+
                             |
                    +--------v---------+
                    |  atomic-server   |
                    | (REST + WS + MCP)|
                    +--------+---------+
              +---------+----+----+---------+
              v          v        v         v
    +-----------+  +----------+  +------+  +----------+
    | src-tauri |  | React UI |  | iOS  |  |mcp-bridge|
    | (sidecar) |  | (browser)|  | app  |  | (stdio)  |
    +-----+-----+  +----------+  +------+  +-----+----+
          |                                       |
    +-----v-----+                           +-----v-----+
    |  React UI  |                          | MCP clients|
    | (desktop)  |                          |(Claude,etc)|
    +------------+                          +------------+

Project Structure

Cargo.toml                  # Workspace root
crates/atomic-core/         # All business logic
crates/atomic-server/       # REST + WebSocket + MCP server
crates/mcp-bridge/          # HTTP-to-stdio MCP bridge
src-tauri/                  # Tauri desktop app (launches server as sidecar)
src/                        # React frontend (TypeScript)
extension/                  # Chromium browser extension
scripts/                    # Import and utility scripts

Development

Prerequisites

Commands

npm install                       # Install frontend dependencies

# Desktop app
npm run tauri dev                 # Dev with hot reload
npm run tauri build               # Production build

# Server only
cargo run -p atomic-server -- serve --port 8080

# Frontend only
npm run dev                       # Vite dev server

# Checks
cargo check                       # All workspace crates
cargo test                        # All tests
npx tsc --noEmit                  # Frontend type check

Tech Stack

Layer Technology
Core Rust, SQLite + sqlite-vec, tokio
Desktop Tauri v2
Server actix-web
Frontend React 18, TypeScript, Vite 6, Tailwind CSS v4, Zustand 5
Editor CodeMirror 6
Canvas Sigma.js, Graphology
AI OpenRouter, Ollama, or OpenAI-compatible (pluggable)

License

MIT

Frequently asked questions

Is atomic free to use?

atomic is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does atomic do?

Self-hosted, semantically-connected personal knowledge base

What is atomic written in?

atomic is primarily written in Rust. Its source is publicly available at https://github.com/kenforthewin/atomic, and it has 2,001 GitHub stars.