Pick your OS β€” install commands below switch to match:
v0.2.x Β· alpha

QuickStart β€” get VibeCoded Orchestrator running in 10 minutes

Local-first knowledge orchestrator for AI coding workflows. Open source. Runs entirely on your machine.

What is VCO?

VibeCoded Orchestrator (VCO) runs in the background while you work in VS Code with the Claude Code extension. It indexes your knowledge, codebase, and tool calls so Claude has persistent memory and code-aware retrieval, without changing how you work.

VCO works with any Claude Code client that reads the project's .claude/ folder. VS Code with the Claude Code extension is the primary target; the standalone CLI and other compatible clients work the same way.

Open source (AGPL-3.0). No cloud dependency.

VS Code with the Claude Code extension panel open alongside a Python file
Primary target: VS Code with the Claude Code extension. VCO indexes the workspace's .claude/ folder automatically.
v0.2.x is alpha. Linux and Windows are validated end-to-end; macOS arm64 is experimental Tier-2 β€” binaries are unsigned and Gatekeeper warns on first launch. Expect rough edges; report them via GitHub Issues.

Prerequisites

WhatWhyCheck with
Python 3.11+ (3.12 recommended)Orchestrator + MCP serverspython3 --version
Docker or PodmanRuns Weaviate, Ollama, SearXNG, code-embedding servicedocker --version or podman --version
Claude subscription (Pro / Max / Team / Enterprise)Required to authenticate Claude Codelogin at claude.ai
(optional) Node.js 18+Only if building the launcher GUI from sourcenode --version
(optional) Claude Code CLIUsed to summarize new KG nodes; if absent, VCO falls back to Ollama with a hardware-appropriate local modelclaude --version

The first-install.* script auto-detects what's missing and offers to install it. On Linux it'll ask for sudo to install system packages.

How to install the prerequisites on Windows / macOS / Linux (click to expand)

Skip this if you already have what you need. Links point to official pages β€” verify versions and signatures before running any installer.

ToolWindowsmacOSLinux
Python 3.11+python.org/downloads/windowsHomebrew: brew install python@3.12 Β· python.org/downloads/macosSystem package (e.g. apt install python3.12 python3.12-venv) Β· python.org/downloads/source
Docker or PodmanDocker Desktop: docs.docker.com (Windows) Β· Podman: podman.io/docs/installationDocker Desktop: docs.docker.com (macOS) Β· Podman: podman.io/docs/installationDocker Engine: docs.docker.com/engine/install Β· Podman: podman.io/docs/installation
Node.js (LTS)nodejs.org/en/downloadHomebrew: brew install node Β· nodejs.org/en/downloadnodejs.org/en/download
VS Codecode.visualstudio.com/downloadcode.visualstudio.com/downloadcode.visualstudio.com/download
Claude Code extension for VS Codemarketplace.visualstudio.commarketplace.visualstudio.commarketplace.visualstudio.com
Claude Code CLI (optional)PowerShell: irm https://claude.ai/install.ps1 | iex Β· Guide: code.claude.com/docs/en/quickstartcurl -fsSL https://claude.ai/install.sh | bash Β· Guide: code.claude.com/docs/en/quickstartcurl -fsSL https://claude.ai/install.sh | bash Β· Guide: code.claude.com/docs/en/quickstart

Step 1 β€” Get the code

A. Clone the repo (recommended for contributors)

cd ~/dev    # or wherever you keep your code
git clone https://github.com/hotak92/vibecoded-orchestrator.git
cd vibecoded-orchestrator

B. Download a release archive (recommended for install)

Each release ships a full per-OS archive on Releases: vibecoded-orchestrator-0.2.0-linux-x64.tar.gz, vibecoded-orchestrator-0.2.0-macos-arm64.tar.gz, vibecoded-orchestrator-0.2.0-windows-x64.zip. Each archive bundles the launcher, the vco CLI, the Python MCP stack, templates (agents, skills, hooks), and install scripts β€” no git clone required. Extract, then double-click first-install.{sh,command,desktop,bat}. A .sha256 sidecar is published alongside every archive; the launcher binary is also SLSA-attested:

gh attestation verify <downloaded-binary> --repo hotak92/vibecoded-orchestrator
GitHub Releases page showing v0.2.0 per-OS archives plus Linux / macOS / Windows launcher binaries
GitHub Releases page with per-OS archives and standalone launcher binaries. All artifacts are SLSA-attested.

Step 2 β€” Run the installer

One command. The installer detects missing dependencies, prompts before installing system packages, and bootstraps the orchestrator's Python venv plus container services.

bash first-install.sh

(or double-click first-install.desktop from your file manager β€” some DEs require enabling "Run executable text files" first)

The installer takes 5–10 minutes plus first-run image downloads (~5 GB).

Step 3 β€” Launch the orchestrator

The installer doesn't auto-start the launcher. Once first-install prints [install] done, manually start the launcher GUI from the same folder you ran the installer in. That's where you register projects, manage secrets, and check service health.

cd ~/dev/vibecoded-orchestrator   # the directory you cloned into
bash start-launcher.sh

Or double-click start-launcher.desktop from your file manager.

"No such file or directory" on the launcher binary? You're probably trying to run ./launcher/dist/linux-x64/vct-launcher directly. That path only exists inside the VCO source repo, not your install target. Use start-launcher.sh (or .bat / .command) instead. That's the entry point the installer creates in your install folder. If the installer didn't create one, your install didn't complete; re-run first-install.

A native GUI window opens.

VCT Launcher home page showing the Library sidebar (Workspace / Knowledge / Team / System) on a fresh install with no projects registered
The launcher home β€” "Your Library" with the sidebar (Workspace Β· Knowledge Β· Team Β· System). On a fresh install the main panel shows "Catalog unavailable" until your first project is registered.
Want to relaunch later? Same command. The launcher is the entry point for all post-install configuration: every time you want to add a secret, register a new project, or check that Weaviate / Ollama are running, start it the same way. It's idempotent β€” running it twice is fine; the second run reuses the running services.
If it shows "Could not connect to localhost": see TROUBLESHOOTING.md. Usually fixed by bash scripts/build-bundled-launcher.sh and restart.

Step 4 β€” Walk through the wizard

On first launch, the OnboardingWizard guides you through 4 steps. The wizard appears automatically; subsequent launches go straight to your library.

4a. Welcome (step 1 of 4)

A quick intro to what VCO does. Click Next β†’ to continue.

OnboardingWizard step 1 Welcome to VibeCoded Tools

4b. System (step 2 of 4)

The wizard probes your system: Python version, container runtime (Docker or Podman), GPU detection, available RAM/VRAM. Most users see all green ticks. If something's missing, the wizard tells you what to install. Click Next β†’ when everything you need is detected.

OnboardingWizard step 2 System with detected OS / Python / Container runtime / RAM / GPU
Real System detection on Linux: OS, Python 3.12, Podman, RAM, NVIDIA GPU all probed.

4c. Containers (step 3 of 4)

The wizard installs VCO's Python venv into your source repo. The install path is auto-detected from where you cloned, not user-pickable. The page shows it read-only: "Installing into /your/clone/path (your source repo)".

It also probes for the shared services and offers to start them if missing:

If services are already running (e.g. you have a VCO install elsewhere on this machine), the wizard reuses them β€” same data, no double-install. The "Use separate containers for this install (advanced)" toggle is for power users who want full isolation.

The container volumes location is shown for transparency. Click Install when ready, confirm in the modal, then Next β†’ once services are up.

OnboardingWizard step 3 Containers with read-only install path, shared services detected
Real Containers step on Linux. Install path is read-only ("Installing into /home/.../vibecoded-orchestrator") with no user-pickable Browse field. Shared services are detected and reused; "Orchestrator already installed at this path" footer appears when the install is up to date.

4d. First project (step 4 of 4)

This is where you register your first project. Enter:

OnboardingWizard step 4 First project with Browse button and GitHub token section

Click Finish. The wizard registers the project, sets up its KG and code-graph collections in Weaviate, and writes per-project state to ~/.vct/launcher.db. Immediately after, the launcher fans out three background tasks against the freshly-registered project: code-graph build, KG sync (0.2.2 β€” knowledge/**/*.md + docs/**/*.md β†’ Weaviate via kg-sync --all), and KG summaries (0.2.3 β€” generate-kg-summary.py per node, fallback chain claude CLI β†’ Ollama β†’ ANTHROPIC_API_KEY β†’ silent skip). Each surfaces a banner under the project header: pending / running / failed stay visible, success / skipped auto-hide 30 s after they complete. The three header buttons (Re-build code graph, Re-sync KG, Re-build KG summaries) re-run each task on demand. If the launcher crashes mid-run, the next boot marks any running rows as failed with "launcher crashed mid-run; click Retry to re-run" β€” no silent re-spawn.

Step 5 β€” Verify everything works

After Finish, you land on the Library home with your new project listed. Click the project card to open its dashboard.

Now open Claude Code in the project folder:

cd ~/dev/test_project
claude

(or open the folder in VS Code with the Claude Code extension installed)

Recommended Claude Code session settings

Before your first session in this project, open the Claude Code command palette (Cmd/Ctrl + K) and configure the Model section. The right setting depends on which model you're using:

Claude Code command palette showing Effort dial and Thinking toggle in the Model section
Claude Code command palette: Effort dial and Thinking toggle in the Model section. The toggle controls fixed-budget thinking on 4.6 / Sonnet 4.6 (set Off); on Opus 4.7 it has no effect.
CLI alternative if you don't have the IDE palette: /effort max (4.6) or /effort xhigh (4.7) at session start, or CLAUDE_CODE_EFFORT_LEVEL=max / =xhigh in your shell rc. To disable fixed-budget thinking on 4.6 set CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 (no-op on 4.7).

Edit any file in the project. The orchestrator's hooks fire in the background, silently β€” no toast or log line in the launcher window. What they do:

Two places to manage KG/Codegraph: per-project (binding) vs. machine-wide (access)

The launcher exposes KG/Codegraph configuration in two distinct places, each for a different job:

Common flows

Confirming hooks fire: write a tiny KG node (e.g. knowledge/concepts/test.md in your project) and within ~5 seconds run hybrid_search("test") from a Claude Code session. If the new node comes back, hooks are working. Detailed per-session logs live at ~/.claude/logs/; the orchestrator's own log is at state/logs/.

Step 6 β€” Configuration tour (post-wizard)

Once your project is registered, click its card on the Library home to open the per-project settings page. Each project has its own configuration with seven tabs.

Per-project settings page on Agents tab showing the seven-tab strip
Project settings page on the Agents tab. The status banner shows when an orchestrator update is available; "Re-build code graph" forces a re-index.

Agents tab β€” what runs in your project

The launcher ships 19 bundled Claude Code agents (code-explorer, coder, planner, gui-tester, doc-organizer, etc.). The Agents tab lets you toggle them on/off per-project and register your own custom agents.

Agents tab with Register form expanded
Click + Register to add a custom agent. Name (filename without .md), Source (user for your own, bundled for ones shipped by VCO), optional Source module, Model (e.g. claude/sonnet, claude/haiku, claude/opus).
Toggling the Enabled checkbox NEVER touches the user filesystem β€” only the DB registry row. Disabled agents stay on disk and can be re-enabled instantly.

Skills tab β€” slash commands

Same pattern as Agents but for slash-command skills (/architect, /tdd, /api-designer, /security-reviewer, etc.). 28 skills ship bundled.

Skills tab with Register form open
Skills register form. Some skills have implicit model preferences (e.g. /architect defaults to opus).

Hooks tab β€” automations that fire on every tool call

Per-project hook registry. 20 bundled hooks auto-fire on tool calls: file edits sync to KG, syntax checks run on writes, credential scans, KG-update nudges every 150k tokens, and more. Disable individual hooks per-project if any are noisy in a particular workflow.

Hooks tab showing PostToolUse / PreToolUse hooks with matchers
Hooks tab β€” events (PostToolUse / PreToolUse / etc.), matchers (which tool calls trigger them), source, enabled state.

Permissions tab β€” allow/deny lists for agent tools

By default agents have broad access; tighten down for sensitive projects. 5 distinct rule kinds give fine-grained control:

Permissions tab with Add form open
Permissions form. Subject: who the rule applies to (agent:planner, @global, etc.). Kind: write_scope, allowed_tool, denied_tool, mcp_server, or permission_mode. Value: the tool name, glob pattern, or MCP server ID.

Secret refs tab β€” per-project env vars (GITHUB_TOKEN, etc.) ⭐

Most workflows need at least GITHUB_TOKEN for repo operations and possibly OPENAI_API_KEY if you use OpenAI as a fallback model. The launcher tracks which keys this project needs; values live in your OS keychain, not in any VCO file. The launcher itself only stores the reference, never the plaintext.

Secrets panel on Per-project tab
The Secrets panel. Three scope tabs at the top, project dropdown for Per-project (auto-populated from registered projects, ↻ refresh), ADD SECRET form below. The (?) icon next to Sensitive explains masked-preview semantics on hover.

Three scopes

Read order (how modules find a secret)

When a module in project P asks for a secret K, the launcher checks in order:

  1. Per-project bag for P (P's secrets)
  2. Shared collection (your other projects' shared secrets)
  3. Global (machine-wide)

First hit wins. A module in P never sees a different project's per-project bag β€” that's the project-isolation guarantee.

The "Sensitive" checkbox

Default ON, and almost always what you want.

Lifecycle: Set / Unset / Reactivate / Remove

Each registered secret has four operations:

KG / Codegraph bindings tab ⭐

Decides which Weaviate collection this project's hybrid_search and code-graph queries hit. The wizard pre-fills sensible defaults but verify these on day one β€” wrong setting β†’ "I can't find my notes" confusion.

KG/Codegraph bindings tab showing Knowledge graph block and Code graph block
Knowledge graph (top): Role dropdown (primary / shared / archive), Collection name, Embedding model, Weaviate URL. Code graph (middle): Collection prefix, Embedding model, Enabled checkbox. Snapshot summary at bottom shows counts at a glance.

Settings tab β€” metadata + project env-var notes

Edit the project name, see folder/host/created-at, and (importantly) keep a notes-only list of env vars your agents expect. Handy for onboarding teammates onto a project without leaking values.

Settings tab showing Metadata block and Project env vars section
Settings tab. The Project env vars (notes only) section is just placeholder reminders. Launcher-managed secret values live in the OS keychain β€” see the Secrets panel. The independent vct CLI under tools/vct-secrets/ uses flat files under ~/.vct-secrets/ for users who prefer a file-based workflow.

Top-level routes worth knowing

Beyond the per-project tabs, the launcher's left sidebar has a SYSTEM section with these top-level routes:

Services β€” manage the shared containers

Start/stop the Weaviate vector DB, Ollama LLM server, SearXNG search, and code_embed service all from one page. The launcher auto-detects services already running (e.g. started by another VCO install or by a previous podman-compose up -d) and treats them as external Β· adopt, so there's no double-management.

Services page showing weaviate / ollama / code_embed all RUNNING
Services page: all three core containers running, Podman as the runtime, with "external Β· adopt" status indicating the launcher inherited them rather than starting them itself.

MCP servers β€” Claude's capability dashboard

Shows every Model-Context-Protocol server registered with Claude Code. The launcher ships 5 default-enabled servers: Knowledge Graph (Weaviate), Local LLM (Ollama, with vision via qwen3.5:9b and document summarization), Web & Code Search (SearXNG + GitHub + arXiv), Code Embeddings (CodeSage-Large-v2 on GPU, Ollama jina fallback on CPU), and Playwright for browser automation. You can add custom MCP servers from here too.

MCP servers dashboard
MCP dashboard at /mcp. Each card shows the server's role, its config path, and a Remove button. Default-enabled servers have a green checkmark.

Other routes

RoutePurpose
/preferencesDefault model, theme, update channel, plus a Manage GitHub token panel to set, update or clear the PAT without re-running the wizard. Re-run the onboarding wizard from here if you skipped a step.
/auditHistory of every config change. Useful for compliance reviews.
/coordinationSend/receive team messages (vct-coordination MCP).
/hubCross-tool integration bus (HTTP API on 127.0.0.1:7700). Apps register themselves to share data with the orchestrator. The hub requires Authorization: Bearer <token> on every /api/v1/* route except /health; the token is regenerated on each launcher startup and persisted to ~/.vct/hub.token (mode 0o600). Bundled wrappers and the vco CLI handle authentication automatically; custom scripts must read the token file fresh on every call.
/glossaryPlain-English explanations of terms used throughout the launcher.
Audit log page
The audit log at /audit. Every config change is recorded with timestamp, actor, operation, and a JSON detail blob. Useful for compliance reviews.

Things to know that aren't in the GUI

VS Code workspace KG_COLLECTION: the project's KG / Codegraph tab does not override the KG_COLLECTION env var that an embedded Claude Code session reads. That's controlled per-workspace by .vscode/settings.json in your project folder. If you have multiple projects open in VS Code, each needs its own .vscode/settings.json with the correct KG_COLLECTION. Easy to miss.
Container volumes location: Podman/Docker manage where named volumes live by default (~/.local/share/containers/storage/volumes/ on Linux user-mode, similar on macOS/Windows). To relocate them, open Settings β†’ Preferences β†’ Volume location: the launcher runs a dry-run with size estimate, ETA and free-space check, copies with cp -a, writes a bind-mount override to infrastructure/docker-compose.override.yml and VCT_VOLUMES_PATH in .env, and only removes the legacy volumes after Weaviate and Ollama health-checks pass. If the migration fails partway, the data stays where it was.

Troubleshooting

Container runtime detected but not running

You have Docker or Podman installed but the daemon isn't started.

# Linux Podman:
systemctl --user start podman.socket

# Linux Docker:
sudo systemctl start docker

Python is 3.10 or older

VCO requires Python 3.11+. The installer will offer to install Python 3.12 via your system package manager (apt / dnf / pacman). You can also install via pyenv before running the installer.

16 GB RAM and "OOM" warnings during model load

The default Ollama vision model (qwen3.5:9b) needs ~24 GB practical headroom. On 16 GB systems the launcher auto-falls back to smaller models. If you still hit OOM during code embeddings, set CODE_EMBED_BACKEND=ollama to use the smaller jina-v2-base-code (768-dim) instead of the GPU CodeSage model.

"Could not connect to localhost" on launch

The bundled launcher binary's frontend is missing or broken. Fix:

bash scripts/build-bundled-launcher.sh

then restart. The 4-layer build defense added in v0.1.0 prevents this from recurring on fresh builds.

For more, see KNOWN_ISSUES.md and INSTALL_RECOVERY.md.

Next steps