Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻譯準備中
The knowledge layer for AI. Connect anything, search everything, with cited answers.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Connect your data, and relationships into one intelligent knowledge that gives AI agents the context they need to understand, reason, and act.
Every answer shows exactly where it came from, or says "I don't know." Self-hosted, so your data never leaves your machine. No vendor lock-in, no black boxes — you control the models, the data, and the infrastructure.
Website · Documentation · Install · How it works · Discord
Add a JSON file and choose Extract knowledge → each record becomes a node of its kind (programme, projects, risks) → open the mapping detection wrote → explore the graph in place → ask the Assistant, which answers with the records it rests on. Recorded end to end in the real product. Watch it in full quality (MP4).
Memory tools such as Mem0, Supermemory and Graphiti remember what your users and agents said. OpenCortyx answers from what your data says: tables, records and documents together, with citations and human review. The two work well side by side.
License: MIT. Free for any use, including commercial. Details
The only requirement is Docker with at least 8 GB of memory available to it and about 10 GB of free disk.
macOS, Linux, WSL
curl -fsSL https://raw.githubusercontent.com/opencortyx/OpenCortyx/main/install.sh | bash
Windows (PowerShell)
irm https://raw.githubusercontent.com/opencortyx/OpenCortyx/main/install.ps1 | iex
The installer downloads the latest release, generates secrets, picks a model backend, starts the stack and waits until it is healthy. Then open http://localhost:3000 and create your admin account.
Until the first stable release it installs the newest beta. To follow beta releases after that, set
OPENCORTYX_CHANNEL=beta for the installer, or run bin/opencortyx update --channel beta.
| Environment | Guide |
|---|---|
| Windows 10 and 11 | docs/installation/windows.md |
| macOS (Apple silicon and Intel) | docs/installation/macos.md |
| Linux (Ubuntu, Debian, Fedora, ...) | docs/installation/linux.md |
| Windows Subsystem for Linux | docs/installation/wsl.md |
| Production server with a domain and TLS | docs/installation/server.md |
From a clone
git clone https://github.com/opencortyx/OpenCortyx.git
cd OpenCortyx
bin/opencortyx up # Windows: bin\opencortyx up
Models are chosen in the dashboard under Models, one default per role (generation, extraction,
utility, embedding, rerank). No .env setting is involved.
| Setup | Generation model on the Models page |
|---|---|
| Ollama, LM Studio or vLLM on the same machine | OpenAI-compatible, http://host.docker.internal:11434/v1, Model ID from ollama list |
| Hugging Face Inference | HuggingFace Inference, your HF token, a Model ID such as Qwen/Qwen3-4B-Instruct-2507 |
| OpenAI, Anthropic, Groq | The provider, its API key and a Model ID such as gpt-4o-mini |
| Azure, Together | OpenAI-compatible, the provider's Base URL and API key |
A new workspace starts with a small built-in generation model (Qwen3-0.6B, on CPU inside the stack), so the Assistant answers from the first file; connect a larger model for better and faster answers. Embeddings and reranking also run on CPU inside the stack. OpenCortyx does not start a model server of its own. See docs/models.md.
AI Assistant: answers grounded in your data, with the records each answer rests on grouped by the file they came from, and everything else retrieved one click away under "Other evidence".
Assets: every ingested document, record set and table, with its format, size, content fingerprint and everything derived from it.
Graph: the knowledge graph as a tree you open in place: workspace, sources, tags, assets, and the records and entities each one holds.
Mapper: what detection found in your tables and JSON, in sentences you can correct: what each record is, what identifies and names it, the fields it carries into the graph and what it links to.
Ingestion: re-runnable ingestions from databases, object storage and local folders, on demand, on a schedule or in real time.
Review Queue: decide on doubtful matches, conflicting values, new document versions and newly discovered types. Nothing changes until you do.
System Health: a live check of the API, database, worker and models, with suggested fixes.
The sidebar shows the pages used every day: Assistant, Add data, Connections, Customize, Runs,
Assets, Graph and Review. The rest are a click away inside them (Customize holds Mappings,
Extractors, Saved setups and Scheduled syncs; Settings holds Users, Models and System health), or
all in the sidebar with FULL_UI=1.
| Area | What you get | Guide |
|---|---|---|
| Discover | Assets, Lineage | discover.md |
| Trust | Curation, Nodes & Relationships, Review Queue, Evaluations, Quarantine | trust.md |
| Integration | Add data, Connections, Ingestion, Mapper, Custom Extractors, Pipelines, Runs | integration.md |
| Intelligence | AI Assistant, Conversations, MCP tools | intelligence.md |
| Administration | Users & Access, Models, System Health, Settings | administration.md |
flowchart LR
subgraph Sources
D[Documents]
R[JSON / XML / YAML]
T[Tables and databases]
end
Sources --> I[Ingestion<br/>mapping + pipeline]
I --> G[(NebulaGraph<br/>nodes · edges)]
I --> V[(Qdrant<br/>vectors · keyword documents)]
G --> Q[Retrieve · fuse · rerank<br/>ground · cite or abstain]
V --> Q
Q --> W[Dashboard]
Q --> API[REST API]
Q --> MCP[MCP server]
MCP --> A[Claude · Cursor · VS Code]
Sources are routed by shape: documents are chunked and extracted by a model, records are walked into nodes deterministically, and tables are catalogued as tables, columns and rows. Every node and edge lands in NebulaGraph and every searchable surface in Qdrant, while Postgres keeps the control plane: collections, pipelines, mappings, runs and the ontology. A question runs several retrievers in parallel, fuses and reranks their results, and answers only from evidence it can cite. The full walkthrough, with diagrams of the data model and the answer pipeline, is in docs/how-it-works.md.
| Layer | Technology |
|---|---|
| Web | Next.js 15, React 19, TypeScript, Tailwind CSS |
| API and workers | Python 3.11, FastAPI, SQLAlchemy 2, Celery |
| Storage | NebulaGraph (graph) · Qdrant (vectors + BM25) · PostgreSQL 16 (control plane) |
| Queue | Redis |
| Models | Any OpenAI-compatible server, Hugging Face Inference or a hosted API; fastembed for embeddings |
bin/opencortyx up start (pull release images or build) and wait until healthy
bin/opencortyx up --build rebuild images from your checkout
bin/opencortyx status service status
bin/opencortyx doctor check Docker, database, model server and embeddings
bin/opencortyx logs [service] follow logs
bin/opencortyx connect claude KEY register the MCP server with Claude Code
bin/opencortyx backup | restore back up or restore every store (database, graph, vectors)
bin/opencortyx update move to the latest release and restart (--channel beta for betas)
bin/opencortyx version print the installed version
bin/opencortyx down stop (data is kept)
bin/opencortyx reset delete all data
| URL | |
|---|---|
| Dashboard | http://localhost:3000 |
| API docs | http://localhost:8000/docs |
| MCP endpoint | http://localhost:8001/mcp |
Create an API key in the dashboard under Users & Access, then:
bin/opencortyx connect claude ax_your_key # Claude Code
bin/opencortyx connect cursor ax_your_key # prints the config for ~/.cursor/mcp.json
Or add it to any MCP client by hand:
{
"mcpServers": {
"opencortyx": {
"type": "http",
"url": "http://localhost:8001/mcp",
"headers": { "X-API-Key": "ax_your_key" }
}
}
}
Tools include opencortyx_search, opencortyx_answer, opencortyx_graph_query,
opencortyx_remember, opencortyx_recall and opencortyx_propose. See the
full tool list.
127.0.0.1. Put a TLS reverse proxy in front of the dashboard
(3000), API (8000) and MCP server (8001), set PUBLIC_WEB_URL and PUBLIC_API_URL, and add the
proxy hostname to MCP_ALLOWED_HOSTS. Step by step: docs/installation/server.md.bin/opencortyx init generates unique secrets; the API refuses to start without
JWT_SECRET. Keep .env out of version control.bin/opencortyx backup and test restores. See docs/BACKUP-RESTORE.md.bin/opencortyx update; migrations run automatically before the API starts.bin/opencortyx doctor, GET /health, and Prometheus metrics at GET /metrics.See SECURITY.md for reporting vulnerabilities and hardening notes.
apps/api FastAPI service, Celery workers, Alembic migrations, tests
apps/web Next.js dashboard and its Playwright end-to-end tests
apps/mcp MCP server
bin/ opencortyx command (bash and PowerShell)
docker/ container support files
docs/ user and contributor documentation
examples/data sample documents and datasets
scripts/ check-memory-budget.py (see docs/memory-budget.md)
compose.yaml the stack (compose.dev.yaml adds live reload for development)
OpenCortyx is in beta. The core loop (ingest, extract, retrieve, answer, MCP) works end to end. Extraction quality depends on the model you run; small local models produce fewer structured entities than larger ones. Not built yet: PII masking, SSO/SCIM, text-to-SQL, change-data-capture, and image or audio ingestion. Plans and requests are tracked in GitHub issues.
OpenCortyx is released under the MIT License. Third-party components keep their own licenses.
One of them is copyleft: the API image includes PyMuPDF and
pymupdf4llm, licensed under the GNU AGPL v3 (or a
commercial license from Artifex). OpenCortyx uses them to turn PDFs into Markdown. Running or
self-hosting OpenCortyx is unaffected. If you distribute a modified OpenCortyx, or offer one as a
network service, without sharing its source code, the AGPL applies to that combined work: share the
source, obtain a commercial PyMuPDF license, or remove the two packages.