{
  "version": "2",
  "generatedAt": "2026-11-06T20:51:57.517Z",
  "listing": {
    "slug": "kenforthewin--atomic",
    "name": "Atomic",
    "tagline": "Self-hosted knowledge base that links markdown notes by meaning, with REST API and MCP server.",
    "shortTagline": "Semantic note graph",
    "description": "Atomic stores notes as atoms that are chunked, embedded, tagged and linked by similarity, then synthesized into cited wiki articles and scheduled reports. One Rust server exposes a REST API with OpenAPI docs and an MCP endpoint at /mcp, both with bearer tokens. It runs as a desktop app, Docker Compose or Fly.io; a hosted Atomic Cloud also exists.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "notes-knowledge",
    "alternativeTo": [],
    "shape": "product",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "Rust",
        "TypeScript",
        "Swift"
      ],
      "frameworks": [
        "Tauri",
        "React"
      ],
      "packageManager": "cargo, npm",
      "database": [
        "SQLite",
        "Postgres"
      ],
      "hostingTarget": [
        "docker",
        "fly.io",
        "desktop"
      ]
    },
    "modelStack": {
      "providers": [
        "OpenRouter",
        "Ollama",
        "OpenAI-compatible"
      ],
      "models": [],
      "requiredKeys": [],
      "promptLocations": [
        "crates/atomic-core/src/wiki/",
        "crates/atomic-core/src/reports/",
        "crates/atomic-core/src/chat.rs"
      ],
      "tools": [
        "semantic_search",
        "read_atom",
        "find_similar",
        "list_tags",
        "list_atoms",
        "list_databases",
        "list_wikis",
        "get_wiki",
        "list_reports",
        "get_report_findings",
        "create_atom",
        "ingest_url",
        "update_atom",
        "edit_atom",
        "search",
        "fetch"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/kenforthewin/atomic",
        "owner": "kenforthewin",
        "name": "atomic",
        "license": "MIT",
        "stars": 2001,
        "lastCommit": "2026-09-29"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://atomicapp.ai/guides/mcp-server/",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create, update and edit notes (atoms)",
        "reachable": true,
        "evidence": "MCP tools create_atom, update_atom, edit_atom; REST /api/atoms"
      },
      {
        "job": "Read and browse notes and tags",
        "reachable": true,
        "evidence": "MCP tools read_atom, list_atoms, list_tags, list_databases"
      },
      {
        "job": "Semantic search and find similar",
        "reachable": true,
        "evidence": "MCP tools semantic_search, find_similar; REST /api/search"
      },
      {
        "job": "Capture web pages",
        "reachable": true,
        "evidence": "MCP tool ingest_url; REST /api/ingest/url"
      },
      {
        "job": "Read synthesized wiki articles",
        "reachable": true,
        "evidence": "MCP tools list_wikis, get_wiki"
      },
      {
        "job": "Read scheduled report findings",
        "reachable": true,
        "evidence": "MCP tools list_reports, get_report_findings"
      },
      {
        "job": "Generate wiki articles and run reports",
        "reachable": true,
        "evidence": "REST /api/wiki/{tag_id}/generate and /api/reports/{id}/run; not in the MCP tool list"
      },
      {
        "job": "Subscribe to RSS feeds",
        "reachable": true,
        "evidence": "REST /api/feeds and /api/feeds/{id}/poll; not in MCP"
      },
      {
        "job": "Chat with the knowledge base",
        "reachable": true,
        "evidence": "REST POST /api/conversations and POST /api/conversations/{id}/messages; not in MCP"
      },
      {
        "job": "Delete notes",
        "reachable": true,
        "evidence": "REST DELETE /api/atoms/{id}; no delete tool among the 16 MCP tools in crates/atomic-server/src/mcp/server.rs"
      }
    ],
    "editions": [
      {
        "name": "Self-hosted",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/kenforthewin/atomic"
          },
          {
            "kind": "container",
            "url": "https://github.com/kenforthewin/atomic/pkgs/container/atomic-server",
            "command": "git clone https://github.com/kenforthewin/atomic.git && cd atomic && echo \"ATOMIC_SETUP_TOKEN=$(openssl rand -base64 24)\" > .env && docker compose up -d"
          },
          {
            "kind": "binary",
            "url": "https://github.com/kenforthewin/atomic/releases"
          }
        ]
      },
      {
        "name": "Atomic Cloud Free",
        "price": {
          "amount": 0,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://atomicapp.ai/cloud"
          }
        ]
      },
      {
        "name": "Atomic Cloud Pro",
        "price": {
          "amount": 12,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://atomicapp.ai/cloud"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No adopter-facing skill found in the repo."
    },
    "customization": {
      "summary": "Env vars only set up the deployment: ATOMIC_SETUP_TOKEN, PUBLIC_URL, ATOMIC_STORAGE, ATOMIC_DATABASE_URL and SQLite cache sizes. Behavior such as provider, models, auto-tagging and scheduled briefings is runtime settings stored in the database, edited in the Settings UI or through PUT /api/settings/{key}. Built-in prompts are Rust source in crates/atomic-core, so changing those is a code edit.",
      "envVars": [
        "ATOMIC_SETUP_TOKEN",
        "PUBLIC_URL",
        "ATOMIC_STORAGE",
        "ATOMIC_DATABASE_URL"
      ],
      "configFiles": [
        "docker-compose.yml",
        "fly.toml.example"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "surfaceKind": "admin-ui",
      "editCount": 6
    },
    "useWhen": [
      "you want a private note graph your agent can search and write to over MCP",
      "you want cited wiki articles and recurring research reports built from your own notes"
    ],
    "accounts": [
      "an AI provider (OpenRouter, OpenAI-compatible) or a local Ollama for embeddings, tagging, wiki and chat"
    ],
    "active": true,
    "lastActivity": "2026-09-29",
    "gotchas": [
      "MCP tools cover read, search, create and edit; deleting notes, wiki generation, reports, feeds and chat need the REST API",
      "Needs an AI provider for embeddings, tagging, wiki and chat",
      "Desktop MCP uses a stdio bridge binary, remote MCP uses a bearer token",
      "Atomic Cloud Free stops at 250 atoms, 1 knowledge base and 100 MB; over the limit the account turns read-only"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: desktop app, Docker Compose, Fly.io, headless server with React web UI",
      "executionModel": "README: embeddings, tagging, wiki synthesis and chat call models; storage and search are deterministic",
      "operability": "crates/atomic-server/src/mcp/server.rs registers 16 tools, matching docs/manual/guides/mcp-server.md; docs/manual/api/overview.md and routes/mod.rs give bearer-token REST with /api/docs/openapi.json. Both ship in atomic-server.",
      "effort": "docs/manual/self-hosting/configuration.md: env vars are server flags; runtime settings live in the registry DB and are edited through the UI or API. No business behavior file found.",
      "editions": "README: MIT, self-host forever; atomicapp.ai/cloud page text and JSON-LD: Free $0 / month, Pro $12 / month; docs/manual/cloud/plans-and-billing.md matches.",
      "active": "latest commit 2026-09-29, release v1.45.0 on 2026-08-09"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.85,
      "operability": 0.95,
      "effort": 0.75,
      "reach": 0.9,
      "editions": 0.95
    },
    "openQuestions": [],
    "sources": [
      {
        "url": "https://atomicapp.ai",
        "foundBy": "sourcing:notes-knowledge:community"
      },
      {
        "url": "https://github.com/kenforthewin/atomic",
        "foundBy": "analysis:notes-knowledge"
      },
      {
        "url": "https://atomicapp.ai/cloud",
        "foundBy": "analysis:notes-knowledge"
      },
      {
        "url": "https://atomicapp.ai/guides/mcp-server/",
        "foundBy": "verification"
      }
    ],
    "published": true,
    "lastCheckedAt": "2026-11-06",
    "research": {
      "stage": "verified",
      "verdict": "dispute",
      "reason": "Gates pass: MIT, commits on 2026-09-29, release v1.45.0, 2,001 stars, outside issue authors. MCP tools counted in server.rs at 16. Cloud prices confirmed. The env surface is deployment only, so surfaceKind is admin-ui as in the Directus ruling.",
      "disputed": [
        {
          "field": "customization.effort",
          "reason": "Named env vars deploy the server; models, tagging and briefing schedules are runtime settings in the database, so config-only covers the deployment step only."
        }
      ]
    },
    "url": "apps/kenforthewin--atomic.html",
    "coverage": "complete",
    "paid": true,
    "source": "research/verified/kenforthewin--atomic.json"
  }
}
