{"id":49845614,"url":"https://github.com/nduckmink/arkon","last_synced_at":"2026-05-14T11:02:51.240Z","repository":{"id":355669113,"uuid":"1225722703","full_name":"nduckmink/arkon","owner":"nduckmink","description":"Arkon: Enterprise AI Knowledge Hub \u0026 MCP Server. Self-hosted knowledge base for teams to manage RAG contexts, access policies, and AI skills. Connect Claude and other LLMs via Model Context Protocol (MCP) for automated, secure organizational knowledge integration.","archived":false,"fork":false,"pushed_at":"2026-05-14T05:41:10.000Z","size":6818,"stargazers_count":697,"open_issues_count":0,"forks_count":132,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-05-14T06:36:03.833Z","etag":null,"topics":["enterprise-ai","knowledge-base-embeddings","knowledge-based-systems","knowledge-bases","llm-wiki-personal-knowledge-base","mcp","mcp-server","model-context-protocol","organizational-knowledge","rag","self-hosted","wiki"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nduckmink.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-30T15:11:39.000Z","updated_at":"2026-05-14T06:10:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nduckmink/arkon","commit_stats":null,"previous_names":["nduckmink/arkon"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/nduckmink/arkon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nduckmink%2Farkon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nduckmink%2Farkon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nduckmink%2Farkon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nduckmink%2Farkon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nduckmink","download_url":"https://codeload.github.com/nduckmink/arkon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nduckmink%2Farkon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33021784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["enterprise-ai","knowledge-base-embeddings","knowledge-based-systems","knowledge-bases","llm-wiki-personal-knowledge-base","mcp","mcp-server","model-context-protocol","organizational-knowledge","rag","self-hosted","wiki"],"created_at":"2026-05-14T11:02:45.583Z","updated_at":"2026-05-14T11:02:51.209Z","avatar_url":"https://github.com/nduckmink.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arkon - The Open-Source Enterprise AI Knowledge Hub \u0026 MCP Server\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-PolyForm_Internal_Use_1.0.0-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nduckmink/arkon/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/nduckmink/arkon.svg\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.docker.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-Ready-blue.svg\" alt=\"Docker\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/arkon.png\" alt=\"Arkon\" width=\"720\"\u003e\n\u003c/p\u003e\n\n**Arkon** is a self-hosted, enterprise-grade knowledge management layer that bridges organizational data and AI clients. It runs as a centralized **MCP Server** (Model Context Protocol), compiling your SOPs, policies, and internal docs into a structured, traceable knowledge wiki - then serving that wiki to Claude and other LLMs through a single permission-scoped endpoint.\n\n## 🚀 Why Arkon?\n\nIn most organizations, AI adoption is fragmented. Employees copy-paste documents into chatbots, producing inconsistent context, security risks, and duplicated work.\n\n**Arkon treats AI as a managed organizational resource.** Every employee gets the right context, automatically and securely - filtered by their department, project membership, and role.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/how-arkon-works.png\" alt=\"How Arkon Works\" width=\"720\"\u003e\n\u003c/p\u003e\n\n---\n\n## ✨ Key Features\n\n### 🧠 Intelligent Knowledge Wiki - the MRP Pipeline\nUnlike a vector database that just chunks and indexes, Arkon's **MRP pipeline** (**M**ap → **R**educe → **P**lan-review → **R**efine → **V**erify → Commit) actually compiles documents into a coherent wiki of interlinked pages.\n- **Plan review before write:** every ingestion produces a human-reviewable plan listing which wiki pages will be created or updated. Editors can regenerate the plan with feedback before any page is written.\n- **Page merge instead of overwrite:** when a new source touches an existing wiki page, content is LLM-merged so prior knowledge is never lost.\n- **Traceable claims:** every page records the source documents it was compiled from.\n- **Image-aware:** vision captions are baked into source text before compilation, so wiki pages reference the right images in the right places.\n- **Resumable:** drafts persist mid-pipeline; a crashed run resumes without re-doing the expensive LLM work.\n\n### 📚 Wiki Browser \u0026 Knowledge Graph\n- Three-panel layout: page tree, content, backlinks \u0026 outlinks.\n- Full-text + semantic (pgvector) search.\n- Interactive knowledge graph visualization (per-scope or global).\n- Wikilink-style cross-references between pages.\n- Version history and rollback on every page.\n- Draft proposal → editor review → approval workflow.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/arkon-wiki-ui.png\" alt=\"Arkon Wiki Browser UI — three-panel knowledge base with page tree, content viewer, and knowledge graph\" width=\"720\"\u003e\n\u003c/p\u003e\n\n### 🏢 Workspaces (Department \u0026 Project Scopes)\nCross-functional contexts with their own scoped wiki, document set, and member roster.\n- **Department-level isolation** for HR, Legal, Engineering, etc.\n- **Project workspaces** for cross-functional initiatives or clients.\n- **Hard scope enforcement:** members only see knowledge from their assigned scopes - at the API, MCP, and search layers.\n\n### 🛂 Fine-Grained RBAC\nRole-based access control at department + workspace level.\n- Built-in roles: **Viewer · Contributor · Editor · Admin** (and admin-defined custom roles).\n- Granular permissions (`doc:read:own_dept`, `wiki:edit:all`, `org:settings:manage`, ...).\n- **Audit log** for every privileged action - settings changes, plan approvals, role updates.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/permission-and-scope.png\" alt=\"Arkon RBAC permission model — department and project scope isolation with role-based access control\" width=\"720\"\u003e\n\u003c/p\u003e\n\n### 🔌 MCP Server for Claude \u0026 Other AI Clients\nEmployees connect Claude Desktop (or any MCP-compatible client) to Arkon with a personal token. The MCP server exposes:\n- **Wiki tools** - `search_wiki`, `read_wiki_page`, `list_wiki_pages`, `read_wiki_index`.\n- **Source drill-down** - `get_source`, `get_source_outline`, `get_source_pages`, `list_sources`.\n- **Edit workflow** - `propose_wiki_edit`, `edit_wiki_page`, `list_pending_drafts`, `review_draft`, `approve_draft`, `reject_draft`.\n- **Discovery** - `list_knowledge_types`, `get_knowledge_type_docs`.\n\nAll tools enforce per-token scope (department, knowledge type, source list).\n\n### 🧰 AI Skills Distribution\nUpload custom agent packages once and distribute them across the org.\n- Versioned skill packages (.zip with `SKILL.md`).\n- Department-scoped visibility.\n- Contribution workflow for end-user updates.\n\n### 🤖 Pluggable AI Providers\nCatalog-driven selection - admins pick from a curated list with context window, cost, and capability metadata on display.\n- **LLM:** Anthropic Claude (Opus / Sonnet / Haiku 4.x), Google Gemini (3.x Pro / Flash / Flash-Lite, 2.5), OpenAI (GPT-5.x, GPT-4.x).\n- **Embedding:** Google `gemini-embedding-*`, OpenAI `text-embedding-3-*` - switchable with online re-embed migration (active model atomically flipped on completion, no zero-result search window).\n- **Vision:** Google Gemini Flash, OpenAI GPT-4o family.\n\n### 🔒 Privacy \u0026 Security First\n- **Self-hosted.** Deploy on-prem or in your private cloud via Docker.\n- **No telemetry.** Outbound traffic goes only to the AI provider you choose.\n- **Encrypted at rest.** API keys stored with Fernet encryption in PostgreSQL.\n\n---\n\n## 🛠️ Tech Stack\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/arkon-architecture.png\" alt=\"Arkon Architecture\" width=\"720\"\u003e\n\u003c/p\u003e\n\n- **Backend:** FastAPI · PostgreSQL + pgvector · Redis (arq workers) · MinIO\n- **Frontend:** Next.js · Tailwind CSS\n- **AI integration:** Model Context Protocol via FastMCP\n- **Document parsing:** PDF, DOCX, DOC, plain text, URLs, embedded images\n\n---\n\n## 💻 Server Requirements\n\nArkon runs **7 Docker containers** (PostgreSQL + pgvector, Redis, MinIO, FastAPI API, 2 ARQ workers, Next.js frontend). The table below provides recommended configurations based on team size:\n\n| | **Starter** | **Team** | **Enterprise** |\n|---|:---:|:---:|:---:|\n| **Team size** | 1 – 20 | 20 – 100 | 100+ |\n| **vCPU** | 2 cores | 4 cores | 8+ cores |\n| **RAM** | 4 GB | 8 GB | 16+ GB |\n| **Storage** | 40 GB SSD | 100 GB SSD | 250+ GB NVMe SSD |\n| **OS** | Ubuntu 22.04+ / Debian 12+ | Ubuntu 22.04+ / Debian 12+ | Ubuntu 22.04+ / Debian 12+ |\n| **Use case** | Evaluation / small teams | Departmental deployment | Organization-wide rollout |\n\n\u003e [!NOTE]\n\u003e - **RAM** is the primary bottleneck — the MRP pipeline workers load large LLM context windows into memory during wiki compilation.\n\u003e - **Storage** scales with your document corpus — pgvector indexes, MinIO file storage, and PostgreSQL WAL logs are the main consumers.\n\u003e - All AI inference happens externally (Anthropic / Google / OpenAI APIs), so **GPU is not required**.\n\u003e - A reverse proxy (Nginx / Caddy) with SSL is recommended for production. See [Setup Guide](docs/SETUP.md).\n\n---\n\n## 🚦 Quick Start (Docker)\n\n**Prerequisites:** Docker \u0026 Docker Compose, plus an API key from your preferred AI provider (Anthropic, Google, or OpenAI).\n\n1. **Clone the repository:**\n   ```shell\n   git clone https://github.com/nduckmink/arkon.git\n   cd arkon\n   ```\n\n2. **Configure environment:**\n   ```shell\n   cp .env.docker.example .env.docker\n   # Edit .env.docker - set SECRET_KEY, admin credentials, and Postgres/MinIO secrets\n   ```\n\n3. **Launch:**\n   ```shell\n   docker compose --env-file .env.docker up -d --build\n   ```\n\n4. Access the portal at `http://localhost:3119`, sign in as admin, then go to **Settings** to pick your embedding / LLM / vision models and paste API keys.\n\n→ See [Setup Guide](docs/SETUP.md) for development mode and the full env reference.\n\n---\n\n## 🔗 Connecting Claude\n\nAfter creating an employee account and generating an MCP token:\n\n```json\n{\n  \"mcpServers\": {\n    \"arkon\": {\n      \"url\": \"https://your-arkon-server/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ark_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\n\nDrop it into `claude_desktop_config.json` and restart Claude Desktop. The employee's scoped knowledge is immediately available.\n\n→ See [MCP \u0026 Claude](docs/MCP.md) for the complete tool reference.\n\n---\n\n## 🗺️ Roadmap\n\n- [x] **MRP Pipeline** - deterministic compilation with plan review, page merge, and resume-on-crash.\n- [x] **MCP Server** - scoped wiki + source + draft tools.\n- [x] **Workspaces** - department isolation + project scopes with RBAC.\n- [x] **Wiki draft \u0026 revision workflow** - propose, review, approve, rollback.\n- [x] **AI Skills** - versioned, department-scoped agent packages.\n- [x] **Catalog-driven model selection** - LLM, embedding, and vision picked from a curated list with cost/context-window metadata.\n- [x] **Online embedding migration** - atomic re-embed with no search downtime.\n- [x] **Audit log** - privileged actions tracked.\n- [ ] **Arkon CLI** - one-command setup for employees.\n- [ ] **Notification system** - for draft reviews and plan approvals.\n- [ ] **Usage analytics dashboard** - cost + adoption per department.\n\n---\n\n## 📄 License\n\nArkon is licensed under the [PolyForm Internal Use License 1.0.0](LICENSE). Free for internal business operations; you may not offer Arkon as a service to third parties.\n\nFor enterprise support or custom integrations, please contact the maintainers.\n\n---\n\n**Keywords:** *Enterprise AI, Model Context Protocol, MCP Server, Knowledge Management System, Self-hosted RAG, AI Knowledge Base, Claude MCP, LLM Context Management, Open Source Wiki.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnduckmink%2Farkon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnduckmink%2Farkon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnduckmink%2Farkon/lists"}