[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94701":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":9,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":14,"starSnapshotCount":14,"syncStatus":21,"lastSyncTime":9,"discoverSource":22},94701,"atomic","kenforthewin\u002Fatomic","kenforthewin","Self-hosted, semantically-connected personal knowledge base",null,"https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic","Rust",1777,124,0,51.29,false,"main","2026-08-24 04:01:22","\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fdocs\u002Fimages\u002Flogo-dark.svg\">\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\".\u002Fdocs\u002Fimages\u002Flogo.svg\">\n  \u003Cimg alt=\"Atomic\" src=\".\u002Fdocs\u002Fimages\u002Flogo.svg\" width=\"300\">\n\u003C\u002Fpicture>\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1489017497200885800?label=discord&logo=discord&logoColor=white&color=5865F2)](https:\u002F\u002Fdiscord.gg\u002FfT4vTERhz3)\n[![Desktop App](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fkenforthewin\u002Fatomic?label=desktop&logo=github)](https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic\u002Freleases\u002Flatest)\n[![Server Image](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fkenforthewin\u002Fatomic?label=server&logo=docker)](https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic\u002Fpkgs\u002Fcontainer\u002Fatomic-server)\n[![Web Image](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fkenforthewin\u002Fatomic?label=web&logo=docker)](https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic\u002Fpkgs\u002Fcontainer\u002Fatomic-web)\n[![Atomic Cloud](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcloud-atomicapp.ai-7c3aed)](https:\u002F\u002Fatomicapp.ai\u002Fcloud)\n\n> ☁️ **[Atomic Cloud](https:\u002F\u002Fatomicapp.ai\u002Fcloud)** — Atomic, hosted at\n> your own subdomain. Try it out for free. Everything below still\n> self-hosts forever.\n\nA personal knowledge base that turns markdown notes into a semantically-connected, AI-augmented knowledge graph.\n\nAtomic 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.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F1992fcf7-1d6b-41b1-a177-2da2e8b57676\n\n![Atom Viewer](.\u002Fdocs\u002Fimages\u002Fatom.png)\n\n*Wiki synthesis — LLM-generated articles with inline citations*\n\n![Wiki Synthesis](.\u002Fdocs\u002Fimages\u002Fwiki.png)\n\n*Canvas — view your knowledge on an interactive graph*\n\n![Canvas](.\u002Fdocs\u002Fimages\u002Fcanvas.png)\n\n*Semantic search — find by meaning, not keywords*\n\n![Semantic Search](.\u002Fdocs\u002Fimages\u002Fsearch.png)\n\n## Features\n\n- **Atoms** — Markdown notes with hierarchical tagging, source URLs, and automatic chunking\n- **Semantic Search** — Vector search over your knowledge base using sqlite-vec\n- **Canvas** — Force-directed spatial visualization where semantic similarity determines layout\n- **Wiki Synthesis** — LLM-generated articles with inline citations, built from your notes\n- **Reports** — Scheduled research tasks that turn your atoms into recurring cited findings (daily briefings, contradiction scans, open-question tracking)\n- **Chat** — Agentic RAG interface that searches your knowledge base during conversation\n- **Auto-Tagging** — LLM-powered tag extraction organized into hierarchical categories\n- **Multiple AI Providers** — OpenRouter, Ollama, or any OpenAI-compatible provider for embeddings and LLMs\n- **RSS Feeds** — Subscribe to feeds and automatically sync new articles as atoms\n- **Browser Extension** — Capture web content directly into Atomic ([Chrome Web Store](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fbknijbafnefbaklndpglcmlhaglikccf))\n- **MCP Server** — Expose your knowledge base to Claude and other AI tools\n- **Multi-Database** — Multiple knowledge bases with a shared registry\n- **iOS App** — Native SwiftUI client for reading and writing atoms on mobile ([App Store](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fatomic-kb\u002Fid6759266634))\n\n## Getting Started\n\nAtomic runs as a **desktop app** (Tauri), a **headless server** (Docker\u002FFly.io), or both.\n\n### Desktop App\n\nDownload the latest release for your platform from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic\u002Freleases) (macOS, Linux, Windows).\n\nOn first launch, the setup wizard walks you through AI provider configuration.\n\n### Self-Host with Docker Compose\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkenforthewin\u002Fatomic.git\ncd atomic\necho \"ATOMIC_SETUP_TOKEN=$(openssl rand -base64 24)\" > .env\ndocker compose up -d\n```\n\nThis starts three services: the API server, the web frontend, and an nginx reverse proxy. Open `http:\u002F\u002Flocalhost:8080` and claim your instance through the setup wizard with the `ATOMIC_SETUP_TOKEN` value from `.env`.\n\nThe 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\u002Fnginx.conf` for an example configuration.\n\n### Deploy to Fly.io\n\n```bash\ncp fly.toml.example fly.toml\nfly launch --copy-config --no-deploy\nfly volumes create atomic_data --region \u003Cyour-region> --size 1\nfly secrets set ATOMIC_SETUP_TOKEN=\"$(openssl rand -base64 24)\"\nfly deploy\n```\n\nOpen `https:\u002F\u002Fyour-app.fly.dev` and claim your instance with the setup token. The public URL for OAuth\u002FMCP is auto-detected from the Fly app name.\n\n### Standalone Server\n\n```bash\nATOMIC_SETUP_TOKEN=\"$(openssl rand -base64 24)\" \\\ncargo run -p atomic-server -- --data-dir .\u002Fdata serve --port 8080\n```\n\nOn first run, enter `ATOMIC_SETUP_TOKEN` in the setup wizard, or create an API token directly:\n\n```bash\ncargo run -p atomic-server -- --data-dir .\u002Fdata token create --name default\n```\n\n## AI Provider Setup\n\nAtomic needs an AI provider for embeddings, tagging, wiki generation, and chat.\n\n- **OpenRouter** — Get an API key from [openrouter.ai](https:\u002F\u002Fopenrouter.ai). Supports separate model selection for embedding, tagging, wiki, and chat.\n- **Ollama** — Install [Ollama](https:\u002F\u002Follama.com) and pull models (e.g., `ollama pull nomic-embed-text`). Atomic auto-discovers available models.\n- **OpenAI-compatible** — Any provider with an OpenAI-compatible API (e.g., OpenAI, Azure OpenAI, Together, Groq). Configure the base URL and API key.\n\nConfigure via the setup wizard on first launch, or later in Settings.\n\n## Browser Extension\n\nThe Atomic Web Clipper captures web content as atoms. Install from the [Chrome Web Store](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fbknijbafnefbaklndpglcmlhaglikccf), then configure your server URL and API token in the extension options.\n\nCaptures are queued offline and synced when the server is available.\n\n## MCP Server\n\nAtomic exposes an MCP endpoint for Claude and other AI tools to search, read, create, update, and ingest atoms.\n\n### Desktop App (Local Mode)\n\nThe 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:\n\n```json\n{\n  \"mcpServers\": {\n    \"atomic\": {\n      \"command\": \"\u002FApplications\u002FAtomic.app\u002FContents\u002FMacOS\u002Fatomic-mcp-bridge\"\n    }\n  }\n}\n```\n\nThe app's Settings > Integrations page shows the exact path for your system.\n\n### Remote \u002F Self-Hosted\n\nFor remote servers or the web app, connect via the HTTP endpoint at `\u002Fmcp` with a Bearer token:\n\n```json\n{\n  \"mcpServers\": {\n    \"atomic\": {\n      \"type\": \"url\",\n      \"url\": \"https:\u002F\u002Fyour-server.com\u002Fmcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_TOKEN\"\n      }\n    }\n  }\n}\n```\n\nCreate a token from Settings > Connection > API Tokens, or via the CLI:\n\n```bash\natomic-server token create --name \"claude\"\n```\n\n**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`\u002F`fetch` aliases. See the [MCP Server guide](https:\u002F\u002Fatomicapp.ai\u002Fmanual\u002Fguides\u002Fmcp-server\u002F) for per-client setup (claude.ai, Claude Code, Cursor, ChatGPT).\n\n## Architecture\n\nAll 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:\n\n```\n                    +------------------+\n                    |   atomic-core    |\n                    |   (all logic)    |\n                    +--------+---------+\n                             |\n                    +--------v---------+\n                    |  atomic-server   |\n                    | (REST + WS + MCP)|\n                    +--------+---------+\n              +---------+----+----+---------+\n              v          v        v         v\n    +-----------+  +----------+  +------+  +----------+\n    | src-tauri |  | React UI |  | iOS  |  |mcp-bridge|\n    | (sidecar) |  | (browser)|  | app  |  | (stdio)  |\n    +-----+-----+  +----------+  +------+  +-----+----+\n          |                                       |\n    +-----v-----+                           +-----v-----+\n    |  React UI  |                          | MCP clients|\n    | (desktop)  |                          |(Claude,etc)|\n    +------------+                          +------------+\n```\n\n## Project Structure\n\n```\nCargo.toml                  # Workspace root\ncrates\u002Fatomic-core\u002F         # All business logic\ncrates\u002Fatomic-server\u002F       # REST + WebSocket + MCP server\ncrates\u002Fmcp-bridge\u002F          # HTTP-to-stdio MCP bridge\nsrc-tauri\u002F                  # Tauri desktop app (launches server as sidecar)\nsrc\u002F                        # React frontend (TypeScript)\nextension\u002F                  # Chromium browser extension\nscripts\u002F                    # Import and utility scripts\n```\n\n## Development\n\n### Prerequisites\n\n- Node.js 22+\n- Rust toolchain ([rustup](https:\u002F\u002Frustup.rs))\n- For the desktop app: platform-specific [Tauri v2 dependencies](https:\u002F\u002Fv2.tauri.app\u002Fstart\u002Fprerequisites\u002F)\n\n### Commands\n\n```bash\nnpm install                       # Install frontend dependencies\n\n# Desktop app\nnpm run tauri dev                 # Dev with hot reload\nnpm run tauri build               # Production build\n\n# Server only\ncargo run -p atomic-server -- serve --port 8080\n\n# Frontend only\nnpm run dev                       # Vite dev server\n\n# Checks\ncargo check                       # All workspace crates\ncargo test                        # All tests\nnpx tsc --noEmit                  # Frontend type check\n```\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|------------|\n| Core | Rust, SQLite + sqlite-vec, tokio |\n| Desktop | Tauri v2 |\n| Server | actix-web |\n| Frontend | React 18, TypeScript, Vite 6, Tailwind CSS v4, Zustand 5 |\n| Editor | CodeMirror 6 |\n| Canvas | Sigma.js, Graphology |\n| AI | OpenRouter, Ollama, or OpenAI-compatible (pluggable) |\n\n## License\n\nMIT\n","Atomic 是一个可自托管的语义化个人知识库系统，将 Markdown 笔记自动拆分为‘原子’（atoms），通过向量化与 AI 技术实现语义关联、自动打标、图谱可视化和智能检索。核心功能包括基于 sqlite-vec 的语义搜索、力导向空间画布、LLM 驱动的维基文章合成、带引用的定期报告生成、RAG 增强聊天界面，以及 RSS 和浏览器扩展内容采集。它适用于注重知识长期积累、跨笔记深度关联与主动推理的个体研究者、学者或知识工作者。",2,"trending"]