Stop Building AI Agents in Isolation: Project Orchestrator Exposed
Your AI coding assistant just suggested the exact same refactoring you rejected three days ago. Claude doesn't remember. Cursor forgot. That brilliant architectural decision you documented? Buried in a chat history that's already scrolled into oblivion. Every AI agent you use is amnesic, isolated, and fundamentally stupid about your codebase.
Sound familiar? You're not alone. Developers everywhere are duct-taping AI tools together, watching them reinvent wheels, rediscover bugs, and rehash debates that should have been settled weeks ago. The productivity promise of AI coding assistants is real—but only if they can learn and share what they learn.
Enter Project Orchestrator, the Rust-based AI agent orchestrator that's quietly becoming the secret weapon of developers who refuse to tolerate AI amnesia. Built on a Neo4j knowledge graph with Meilisearch semantic search, Tree-sitter code parsing, and a sophisticated protocol FSM engine, this open-source tool transforms your scattered AI agents into a coordinated swarm with collective intelligence.
Ready to stop repeating yourself? Let's dive into why top developers are abandoning isolated AI workflows—and why Project Orchestrator is the infrastructure they didn't know they needed.
What is Project Orchestrator?
Project Orchestrator is a Rust-powered coordination layer for AI coding agents. Created by this-rs and released as open-source under the MIT license, it functions as a shared brain that persists code understanding, architectural decisions, development plans, and task progress across all your AI tools.
At its core, Project Orchestrator solves a deceptively simple problem: AI agents start from zero every session. Whether you're using Claude Code, OpenAI Agents, or Cursor, each conversation is a blank slate. Project Orchestrator breaks this cycle by maintaining a living knowledge graph in Neo4j—a graph database that stores not just files and functions, but the relationships between them, the decisions made about them, and the context that makes them meaningful.
The project has evolved rapidly since its initial release in January 2026, with major milestones including the Knowledge Fabric (v0.0.5), Protocol FSM Engine (v0.0.8), and Neural Routing ML Pipeline (v0.0.11). It's trending now because the developer community has hit a collective wall: AI tools are powerful but fragmented, and the overhead of managing their ignorance is becoming unbearable.
What makes Project Orchestrator genuinely different? It's not just a database with an API. It's a complete cognitive architecture for AI agents—complete with finite state machines for workflows, semantic search for discovery, real-time event synchronization via NATS, and a bio-inspired neural network that mimics how human teams actually share knowledge.
Key Features That Separate It From the Noise
Let's cut through the marketing and examine what Project Orchestrator actually delivers:
Shared Knowledge Base via Neo4j
Every function, file, decision, and note becomes a node in a traversable graph. When one agent learns something, all agents can query it. The graph captures imports, calls, co-changes, and semantic relationships—not just static structure but dynamic evolution.
Semantic Code Search with Meilisearch
Keyword search is dead. Project Orchestrator indexes your codebase by meaning, allowing queries like "find authentication flow handlers" to return relevant results even when the words "authentication" or "handler" never appear in the code. This is powered by Meilisearch with vector embeddings.
Protocol FSM Engine
This is where things get interesting. Protocols are hierarchical finite state machines stored in the knowledge graph. They model repeatable workflows—from code reviews to release pipelines—with states, transitions, guard conditions, and context-aware routing. A "safe modification" protocol can enforce that every non-trivial change goes through impact analysis, topology verification, risk assessment, implementation, verification, and documentation.
Tree-Sitter Multi-Language Parsing
Supporting 16 languages including Rust, TypeScript, Python, Go, Java, C/C++, and Zig, the Tree-sitter integration extracts precise AST-based symbols and relationships. This isn't regex-based guessing—it's structural understanding.
Knowledge Fabric: Bio-Inspired Neural Network
Perhaps the most ambitious feature. The Knowledge Fabric connects notes, decisions, and code via "synapses" that strengthen with use and decay when neglected. It includes knowledge scars (lessons from failures), homeostasis metrics (codebase health), and community detection for understanding module boundaries.
Real-Time Event Synchronization
Via NATS and WebSockets, changes propagate instantly across all connected agents. The desktop app, MCP server, and HTTP backend stay synchronized. CRUD events stream live. No more stale context.
22 MCP Mega-Tools
The Model Context Protocol integration exposes 22 powerful tools to Claude Code, OpenAI Agents, and Cursor—from create_project and sync_project to analyze_impact, get_health, and bootstrap_knowledge_fabric.
Use Cases: Where Project Orchestrator Actually Shines
1. The Amnesia-Free Team Handoff
You're mid-refactoring when you switch from Claude Code to Cursor for better TypeScript support. Normally, you'd spend 20 minutes re-explaining the codebase. With Project Orchestrator, Cursor queries the knowledge graph and immediately understands: "We're migrating from Express to Fastify. The auth middleware pattern is documented in note #2847. Three files remain to migrate."
2. Enforced Code Review Rigor
Your team keeps missing edge cases in reviews. You define a "safe modification" protocol in the FSM engine. Now every non-trivial change must pass through impact analysis, topology checks (no architectural rule violations), risk scoring via PageRank and betweenness centrality, and verification before documentation. The protocol doesn't forget steps, doesn't get lazy, and doesn't let anyone skip guardrails.
3. Cross-Project Microservices Coordination
You're managing six microservices with shared API contracts. A workspace groups them with shared context. When you modify the user schema in the auth service, Project Orchestrator's impact analysis identifies all downstream consumers, surfaces the relevant RFC, and suggests updating the contract documentation—all before you commit.
4. Knowledge Archaeology and Onboarding
New hire needs to understand why you chose Kafka over RabbitMQ? Semantic search surfaces the decision record. Want to know what files change together? Co-change detection reveals coupling. Curious which modules are becoming hotspots? The health dashboard shows PageRank scores, churn rates, and structural risk metrics.
Step-by-Step Installation & Setup Guide
Project Orchestrator offers multiple installation paths. Here's how to get running in under 10 minutes.
Prerequisites
You'll need Docker installed for the backend services (Neo4j, Meilisearch, NATS). Rust 1.75+ is required for building from source.
Method 1: Docker Compose (Recommended)
Clone the repository and start all services:
git clone https://github.com/this-rs/project-orchestrator.git
cd project-orchestrator
docker compose up -d
This launches Neo4j, Meilisearch, and NATS with sensible defaults. Then start the orchestrator:
orchestrator serve
Method 2: Homebrew (macOS / Linux)
brew install this-rs/tap/project-orchestrator
This installs three binaries: orchestrator (main server), orch (CLI shorthand), and mcp_server (MCP integration).
Method 3: Shell Script
# Latest version
curl -fsSL https://raw.githubusercontent.com/this-rs/project-orchestrator/main/install.sh | sh
# Specific version
curl -fsSL https://raw.githubusercontent.com/this-rs/project-orchestrator/main/install.sh | sh -s -- --version 0.0.13
# Without embedded frontend (lighter)
curl -fsSL https://raw.githubusercontent.com/this-rs/project-orchestrator/main/install.sh | sh -s -- --no-frontend
Method 4: Desktop App
Download pre-built binaries for your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | .dmg |
| macOS (Intel) | .dmg |
| Windows (64-bit) | .exe |
| Linux (Universal) | .AppImage |
Configure Your AI Tool
Add to your MCP configuration (e.g., ~/.claude/mcp.json):
{
"mcpServers": {
"project-orchestrator": {
"command": "mcp_server",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "orchestrator123",
"MEILISEARCH_URL": "http://localhost:7700",
"MEILISEARCH_KEY": "orchestrator-meili-key-change-me",
"NATS_URL": "nats://localhost:4222"
}
}
}
}
Critical:
NATS_URLenables real-time event sync. Without it, CRUD events from MCP tools won't propagate to other instances. The MCP server also readsconfig.yamlas fallback if env vars aren't forwarded.
First Project Sync
# Your AI agent can now use MCP tools:
# - create_project: Register your codebase
# - sync_project: Parse and index your code with Tree-sitter
# - create_plan: Start a development plan
# - create_workspace: Group related projects
REAL Code Examples from the Repository
Let's examine actual patterns from Project Orchestrator's documentation, with detailed explanations of how to leverage them.
Example 1: MCP Configuration for Claude Code Integration
The following JSON configures the Model Context Protocol server that bridges Claude Code with Project Orchestrator's knowledge graph:
{
"mcpServers": {
"project-orchestrator": {
"command": "mcp_server",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "orchestrator123",
"MEILISEARCH_URL": "http://localhost:7700",
"MEILISEARCH_KEY": "orchestrator-meili-key-change-me",
"NATS_URL": "nats://localhost:4222"
}
}
}
}
What's happening here? The mcp_server binary acts as a protocol adapter. When Claude Code spawns it, the server connects to three backend services: Neo4j for graph queries, Meilisearch for semantic search, and NATS for event publishing. The NATS_URL is particularly crucial—without it, the MCP server operates in a silo. Any projects, plans, or notes it creates won't appear in the desktop app or other agent instances. This configuration pattern is identical for OpenAI Agents and Cursor, making Project Orchestrator truly tool-agnostic.
Example 2: Composing a Safe Modification Protocol
This is the full protocol definition that enforces rigorous change management:
protocol(action: "compose", project_id: "...",
name: "safe-modification",
category: "business",
states: [
{ name: "gather-context", state_type: "start",
description: "Load notes, decisions, propagated context, active RFCs" },
{ name: "analyze-impact", state_type: "intermediate",
description: "Run analyze_impact + get_file_co_changers on target files" },
{ name: "check-topology", state_type: "intermediate",
description: "Verify new imports don't violate architectural rules" },
{ name: "check-risks", state_type: "intermediate",
description: "Evaluate risk via get_node_importance — PageRank, betweenness, churn" },
{ name: "implement", state_type: "intermediate",
description: "Make changes with full awareness of impact and constraints" },
{ name: "verify", state_type: "intermediate",
description: "Run tests + re-check topology for new violations" },
{ name: "document", state_type: "intermediate",
description: "Create notes, record decisions, link AFFECTS to changed files" },
{ name: "done", state_type: "terminal",
description: "Changes are safe, tested, and documented" }
],
transitions: [
{ from_state: "gather-context", to_state: "analyze-impact", trigger: "context_loaded" },
{ from_state: "analyze-impact", to_state: "check-topology", trigger: "impact_assessed" },
{ from_state: "check-topology", to_state: "check-risks", trigger: "topology_ok" },
{ from_state: "check-topology", to_state: "gather-context", trigger: "topology_violation",
guard: "New imports violate architectural rules — rethink the approach" },
{ from_state: "check-risks", to_state: "implement", trigger: "risks_acceptable" },
{ from_state: "check-risks", to_state: "gather-context", trigger: "high_risk",
guard: "Critical risk score — need a different approach" },
{ from_state: "implement", to_state: "verify", trigger: "changes_made" },
{ from_state: "verify", to_state: "document", trigger: "verification_passed" },
{ from_state: "verify", to_state: "implement", trigger: "verification_failed" },
{ from_state: "document", to_state: "done", trigger: "documented" }
],
relevance_vector: { phase: 0.5, structure: 0.7, domain: 0.5, resource: 0.5, lifecycle: 0.5 }
)
Deep dive: This protocol exemplifies Project Orchestrator's power. The compose action creates a complete FSM in one call—states, transitions, and relevance vector. Notice the guard conditions on topology_violation and high_risk triggers: these are mandatory checks that can force the workflow back to gathering context. The relevance_vector enables context-aware routing—when multiple protocols could apply, Project Orchestrator scores them against five dimensions (phase, structure, domain, resource, lifecycle) to suggest the best match.
Example 3: RFC Lifecycle Management
Here's how architectural decisions flow through formal review:
# Create an RFC as a special knowledge note
note(action: "create",
project_id: "...",
note_type: "rfc",
content: "## Problem\nOur API returns inconsistent error formats...\n\n## Proposed Solution\nStandardize on RFC 7807 Problem Details...\n\n## Alternatives\n1. Custom error envelope...\n2. GraphQL errors...\n\n## Impact\n- All HTTP handlers in src/api/\n- Client SDK needs update\n- Migration guide required",
importance: "high",
tags: ["rfc", "api", "error-handling"]
)
# Advance through lifecycle states
note(action: "advance_rfc", note_id: "...", trigger: "propose") # draft → proposed
note(action: "advance_rfc", note_id: "...", trigger: "accept") # proposed → accepted
note(action: "advance_rfc", note_id: "...", trigger: "implement") # accepted → implemented
# Check current status
note(action: "get_rfc_status", note_id: "...")
# → { state: "accepted", protocol_run: { ... } }
Why this matters: RFCs aren't just documents—they're state machines with formal transitions. The advance_rfc action triggers protocol transitions, creating an audit trail of who approved what and when. This prevents the "stealth architecture change" problem where critical decisions get made in Slack threads and lost. The get_rfc_status query lets any agent check whether a proposed approach has been vetted before implementing it.
Example 4: Knowledge Fabric Health Check
Before refactoring, understand your codebase's structural health:
# Bootstrap semantic relationships on a new project
admin(action: "bootstrap_knowledge_fabric", project_id: "...")
# Check comprehensive health metrics
code(action: "get_health", project_slug: "my-project")
# Returns: hotspots (high-churn files), risks (structural complexity),
# homeostasis (balance metrics), neural scores (knowledge connectivity)
# Understand module boundaries before restructuring
code(action: "get_communities", project_slug: "my-project")
# Returns: detected communities based on co-change patterns and imports
# Evaluate specific file risk before modification
code(action: "get_node_importance", project_slug: "my-project",
node_path: "src/neo4j/client.rs", node_type: "File")
# Returns: PageRank (global importance), betweenness (bottleneck potential),
# churn rate (modification frequency)
The insight: These tools leverage graph algorithms on the knowledge fabric. get_communities uses community detection (likely Louvain or similar) to find natural module boundaries—incredibly valuable when your folder structure has drifted from actual coupling. get_node_importance combines three centrality metrics: PageRank for global influence, betweenness for bottleneck risk, and churn for volatility. A file with high PageRank and high churn is a refactoring priority—it's important and unstable.
Advanced Usage & Best Practices
Knowledge-First Development
The golden rule: always warm up before work. Query existing knowledge to avoid redundant discovery:
note(action: "search_semantic", query: "authentication flow")
decision(action: "search_semantic", query: "JWT vs sessions")
note(action: "get_context", entity_type: "file", entity_id: "src/auth/mod.rs")
Capture Everything
After every meaningful discovery, create a typed note:
| Situation | Note Type | Purpose |
|---|---|---|
| Found a bug root cause | gotcha |
Prevent repeated debugging |
| Discovered a pattern | pattern |
Codify conventions |
| Made a convention choice | guideline |
Enforce consistency |
| Learned a useful trick | tip |
Accelerate future work |
| Observed behavior | observation |
Build empirical understanding |
Always link notes to relevant code with link_to_entity.
Impact Before Modification
Never change code without checking consequences:
code(action: "analyze_impact", target: "src/api/handlers.rs")
code(action: "get_file_co_changers", file_path: "src/api/handlers.rs")
note(action: "get_propagated", file_path: "src/api/handlers.rs", slug: "my-project")
Use Hierarchical Protocols
Complex workflows decompose into sub-protocols. A release protocol can delegate to a testing protocol, which delegates to individual test suite protocols. Completion strategies (all_complete, any_complete, manual) and failure strategies (abort, skip, retry(N)) provide flexibility.
Comparison with Alternatives
| Feature | Project Orchestrator | LangChain Memory | GitHub Copilot Chat | Sourcegraph Cody |
|---|---|---|---|---|
| Knowledge Persistence | Persistent graph database (Neo4j) | Session/ephemeral | Per-conversation | Code intelligence only |
| Cross-Agent Sharing | Yes, via shared graph | No | No | Limited |
| Semantic Search | Meilisearch with embeddings | Varies | Basic keyword | Code search focused |
| Workflow Enforcement | Protocol FSM engine | None | None | None |
| Multi-Language Parsing | 16 languages via Tree-sitter | N/A | Limited | Good |
| Real-Time Sync | NATS + WebSocket | N/A | N/A | N/A |
| Self-Hosted | Yes, fully open source | Partial | No | Partial |
| MCP Integration | 22 mega-tools | Growing | No | Some |
| Bio-Inspired Knowledge | Knowledge Fabric with synapses | No | No | No |
The verdict: LangChain Memory is flexible but ephemeral. Copilot Chat is convenient but isolated. Sourcegraph Cody excels at code intelligence but lacks workflow orchestration. Project Orchestrator is the only solution that combines persistent knowledge graphs, cross-agent synchronization, enforced workflows, and semantic understanding in a self-hosted package.
FAQ
Is Project Orchestrator production-ready?
Version 0.0.13 is actively developed with rapid iteration. Core features are stable; the project recommends starting with non-critical workflows and scaling up. The MIT license allows modification and self-hosting.
Do I need to know Rust to use it?
No. Pre-built binaries exist for all major platforms. You only need Rust if building from source or contributing.
Can I use this with my existing AI tools?
Yes. Claude Code, OpenAI Agents, and Cursor are officially supported via MCP. The protocol is extensible to other tools.
How does this differ from RAG (Retrieval-Augmented Generation)?
Traditional RAG retrieves documents for context. Project Orchestrator maintains a living, queryable, modifiable knowledge graph with relationships, decisions, and workflows. It's RAG evolved into persistent collective intelligence.
What's the performance impact on large codebases?
Tree-sitter parsing is incremental. Initial sync of 50k LOC takes ~3 minutes per the documentation. The Neo4j graph enables sub-second traversal queries even for complex dependency chains.
Is my code sent to external APIs?
No. Everything self-hosts: Neo4j, Meilisearch, NATS, and the orchestrator itself. The optional Claude chat integration calls Anthropic's API, but core functionality requires no external services.
How do I migrate from isolated AI workflows?
Start with create_project and sync_project for one repository. Use bootstrap_knowledge_fabric to seed initial relationships. Then incrementally add protocols for your most painful repetitive workflows.
Conclusion
The future of AI-assisted development isn't smarter individual agents—it's coordinated collectives that learn together. Project Orchestrator delivers this future today, with a mature Rust foundation, sophisticated graph architecture, and genuine open-source ethos.
The pain of repeating yourself to amnesic AI tools? Solved. The risk of architectural decisions evaporating into chat history? Eliminated. The chaos of multiple agents working at cross-purposes? Replaced by protocol-driven harmony.
Project Orchestrator isn't just another tool in your AI stack. It's the infrastructure that makes your other tools actually useful at scale.
Ready to give your AI agents a shared brain? Clone the repository, spin up Docker Compose, and experience coordinated intelligence.
👉 Get Project Orchestrator on GitHub — Your future self will thank you when the next agent already knows what you're working on.