Automate Everything
Conductor unifies AI providers, local tools, and external APIs into a single intelligent agent you control. Natural language. Zero cloud lock-in. Runs on your machine.
// What Conductor Is
Agentic Loop
Multi-step reasoning with iterative tool invocation. Conductor thinks, calls tools, processes results, and loops — automatically — until the task is done.
Plugin-Driven
Each capability is a self-contained plugin exposing typed JSON Schema tool definitions. No glue code — the AI layer discovers and uses tools natively.
Local-First Security
AES-256-GCM encrypted credential vault. Zero cloud telemetry. No AlxLabs servers in the request chain. Your data, your machine, your rules.
Provider Agnostic
Claude, GPT-4o, Gemini 1.5, and Ollama — all behind a unified ProviderAdapter. Switch AI backends in one command without touching your plugins.
Multi-Transport
Same agent, multiple interfaces: interactive CLI, REST API, Telegram bot remote, and MCP server for IDE integration. All run simultaneously.
Web Dashboard
Full-featured browser dashboard — files, processes, notes, terminal, logs, credentials, plugins, and Docker. Command palette, keyboard shortcuts, live metrics.
// Get Running in 2 Minutes
⚡ Quick Install
macOS / Linux
$ curl -fsSL https://conductor.thealxlabs.ca/install.sh | bashWindows (PowerShell, run as Admin)
> irm https://conductor.thealxlabs.ca/install.ps1 | iex// Plugin Ecosystem
Full playback control, queue management, search, playlist editing, and device switching via the Spotify Web API.
Encrypted local markdown vault with full-text indexing, tag support, and fast fuzzy search across all your notes.
Read, compose, send, and label Gmail via OAuth 2.0 minimal scopes. Tokens stored in your local encrypted vault. Request access →
CPU, RAM, disk, and running processes via systeminformation. Powers the dashboard's live metrics and process manager.
PRs, issues, workflow runs, releases, notifications — full GitHub coverage from a single PAT.
Headless Chromium for web browsing, content extraction, form filling, and screenshot capture — fully automated.
DASHBOARD.md
The Conductor web dashboard — a full local control plane for your machine, agents, and integrations. Runs at localhost:4242.
🖥️ Overview
Launch with conductor dashboard. The dashboard is a single-page app served locally — no cloud, no external dependencies. Everything talks to your local Conductor API.
$ conductor dashboard # opens at http://localhost:4242
$ conductor dashboard --port 8080 # custom portThe dashboard auto-generates a one-time auth token stored in ~/.conductor/config.json. The token is required for all API calls — the dashboard is not publicly accessible.
⌨️ Keyboard Shortcuts
Navigate the dashboard entirely from the keyboard. No mouse required for any common action.
Jump to any page, run a shell command (prefix >), or search notes (prefix @). Filters in real-time.
Vim-style two-key navigation. g o = Overview, g t = Tasks, g l = Logs, g c = Credentials, etc.
Toggle sidebar between full (220px) and icon-only (40px) mode with a smooth CSS transition.
Show the full keyboard shortcuts reference overlay from anywhere in the dashboard.
When on the Tasks page, instantly focus the new task input field.
Clear the terminal output from anywhere on the System page. Works like a real shell.
📄 Pages
| Page | What it does | Key features |
|---|---|---|
| Overview | Live metrics dashboard | CPU/memory sparklines, uptime, AI provider badge, live log tail, quick actions |
| Tasks | Todoist integration | Add/complete/delete tasks, priority filter, project filter, relative due dates, bulk actions |
| Files | Local filesystem browser | Browse, read, edit, create, delete files. Clickable breadcrumb path segments. Hidden file toggle. |
| Processes | System process manager | Sortable columns, search/filter, kill with confirm, CPU highlight for high-usage processes, auto-refresh |
| Network | Network overview | Load average sparkline (1m/5m/15m), established connections, interface info |
| System | System tools | Terminal with history persistence, screenshot, clipboard read/write, apps list, env vars, Git status, Docker, Cron |
| Notes | Local markdown notes | Create/edit/delete notes, search by title and content, word count, markdown preview, auto-save with debounce |
| Plugins | Plugin manager | Enable/disable plugins, credential status per plugin, config schema display |
| Credentials | Credential vault | Set/delete API keys, Google OAuth connect/disconnect, status badges |
| Logs | Live SSE log stream | Level filter with counts, text search with highlight, pause/resume, export as .txt, auto-scroll toggle |
| Settings | Configuration | AI provider selection, model config, security toggles, version info, dashboard token reveal |
🐛 Bug Fixes (v0.9.1)
These issues were identified in the initial dashboard release and are fixed in v0.9.1:
< were appearing in notes. Fixed by using textContent instead of innerHTML for note body content.svg.clientWidth returned 0 before paint. Fixed by wrapping first draw in requestAnimationFrame._logLines.shift() was called on every SSE message on a 2000-item array. Replaced with bulk splice to amortize the cost./api/config after every save.loadProcesses() call.✨ QoL Features (v0.9.1)
Quality-of-life improvements shipped alongside the bug fixes:
⌘K/Ctrl+K from anywhere. Navigate pages, run shell commands (> prefix), search notes (@ prefix). Real-time filtering.
Shell history saved to localStorage (max 100 entries) and restored on next session. Arrow-key navigation still works.
Filter log lines by text with real-time highlight. Amber-colored match highlighting. Works alongside the level filter.
Filter buttons now show live counts: ERROR (3) WARN (12) — updated as new SSE events arrive.
Download currently filtered log lines as conductor-logs.txt with a single click.
Search input above the note list filters by title and content in real-time.
Live word count shown in the note editor toolbar. Updates as you type.
Toggle between edit and preview mode. Renders bold, italic, headings, lists, and inline code without any external library.
Task due dates shown as "Today", "Tomorrow", "3 days", "2 weeks" instead of raw ISO strings. Color coding preserved.
Checkbox column on Tasks page. Select multiple tasks, then complete or delete all selected in one click.
Click any column header (PID, CPU%, MEM%, COMMAND) to sort. Sort direction indicator arrow. Default: CPU% descending.
Press [ or click the toggle button to collapse sidebar to 40px icon-only mode. Smooth 200ms CSS transition.
Overview page System card now shows the active AI provider (e.g. claude · claude-sonnet-4-6).
document.title updates on every navigation: Conductor — Logs, Conductor — Files, etc.
Each path segment in the file browser is clickable — jump to any ancestor directory without using the back button.
Inline SVG favicon — orange "C" on a rounded rect. No external request, renders in all modern browsers.
ROADMAP.md
What's shipped, what's in progress, and what's coming next.
✅ Shipped — v0.9.0
MCP Server
Full Model Context Protocol implementation. Claude Desktop, Cursor, and any MCP client can connect and use all enabled plugins as native tools.
Web Dashboard
Single-page control plane at localhost:4242. Files, processes, notes, terminal, logs, credentials, plugins, Docker, Git, and network tools.
AES-256-GCM Keychain
Machine-keyed encrypted credential storage. All API keys and tokens hardware-bound to the installing machine.
25+ Builtin Plugins
Spotify, GitHub, Notion, Vercel, n8n, Gmail, Calendar, Drive, Telegram, Slack, X, HomeKit, and 15+ utility plugins.
Multi-Provider AI
Claude, OpenAI, Gemini, OpenRouter, and Ollama behind a unified interface. Hot-swap with one command.
One-liner Installer
15-step interactive installer for macOS, Linux, and Windows. Idempotent — safe to re-run.
🔧 In Progress — v0.9.1
Dashboard QoL + Bug Fixes
Command palette, keyboard shortcuts, note markdown preview, log text search, sortable process table, relative due dates, collapsible sidebar, and 7 bug fixes. Full list →
Google OAuth Verification
Submitting Gmail and Drive scopes for Google verification. Once approved, Google features become available to all users without an invite. Current estimated timeline: 2–4 weeks.
Plugin Marketplace
Community plugin registry at conductor.thealxlabs.ca/registry.json. conductor install <plugin> to pull and install external plugins.
📋 Planned — v1.0
Plugin Sandboxing
Isolate plugin execution so a broken plugin can't crash the main Conductor process. V8 isolates or worker threads.
Conversation History Summarization
Auto-summarize old messages when conversation history exceeds 30 messages, instead of silently dropping context.
Database Migrations
Schema versioning for the SQLite database so updates don't break existing installations.
Dashboard Light Mode
CSS variable-based theme toggle. Dark by default, light available for bright environments.
AI Ask on Overview
Quick single-shot AI input directly on the dashboard overview page for fast queries without opening a full chat.
Pinned Notes
Star/pin notes to keep them at the top of the note list regardless of recency.
Conductor Pro
Optional paid tier for GitHub Sponsors — priority support, early access to new plugins, and a "Conductor Pro" badge in the dashboard. Core product stays free and open-source forever.
DOCUMENTATION.md
Full technical reference — installation, configuration, providers, plugins, CLI, architecture, MCP, Telegram, and more.
☁ Installation
Conductor requires Node.js 18+, npm, and Python 3.6+. The interactive installer handles everything else — cloning, building, linking the conductor CLI globally, and walking you through 15 setup steps.
macOS / Linux
$ curl -fsSL https://conductor.thealxlabs.ca/install.sh | bashWindows — PowerShell (run as Admin)
> irm https://conductor.thealxlabs.ca/install.ps1 | iexFrom source
$ git clone https://github.com/thealxlabs/conductor.git
$ cd conductor
$ bash local-install.shSystem Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| Node.js | 18.x | 20.x LTS or 22.x |
| Python | 3.6 | 3.11+ (installer only) |
| RAM | 256 MB | 1 GB+ |
| OS | macOS 12+, Ubuntu 20.04+, Windows 11 | |
⚡ How It Works
When you run conductor start or send a message via Telegram/Slack, it spins up an AI conversation loop with access to every tool exposed by your enabled plugins. You talk to it in plain English — it decides which tools to call, calls them, processes the results, and responds.
The Agent Loop
── Input ──────────────────────────────────────────────
CLI / Telegram / Slack / MCP / Dashboard
↓
── AIManager.handleConversation() ────────────────────
History (30 msgs) + all enabled plugin tool schemas
→ current AI provider (Claude / GPT / Gemini / Ollama)
↓
── Model responds ────────────────────────────────────
tool_use → PluginManager.execute(tool, args) → loop
end_turn → return text to userThree Ways to Use It
- MCP Server:
conductor mcp start— Claude Desktop, Cursor, or any MCP client connects and sees all enabled plugins as native tools. - Telegram Bot:
conductor telegram start— Chat from your phone. Long-poll, no inbound ports needed. - Web Dashboard:
conductor dashboard— Full control plane at localhost:4242. See Dashboard docs →
⬡ AI Providers
Five AI backends, all behind the same interface. Switch at any time — plugins don't change.
| Provider | Models | Needs | Notes |
|---|---|---|---|
claude | claude-sonnet-4-6, opus-4-6, haiku | ANTHROPIC_API_KEY | Best tool-calling reliability |
openai | gpt-4o, gpt-4-turbo, gpt-4o-mini | OPENAI_API_KEY | Also used for Memory embeddings |
gemini | gemini-1.5-pro, gemini-1.5-flash | GOOGLE_API_KEY | Shares OAuth with Gmail/Calendar/Drive |
openrouter | any model on openrouter.ai | OPENROUTER_API_KEY | 100+ models via one key |
ollama | llama3.2, mistral, qwen2.5, etc. | Ollama running locally | Fully offline |
$ conductor ai setup # interactive setup wizard
$ conductor ai switch claude # hot-swap provider
$ conductor ai test # verify connection⬣ Plugins
25+ builtin plugins in src/plugins/builtin/. Each exposes typed tool definitions — the AI discovers and uses them automatically.
| Plugin | Tools | Requires | Description |
|---|---|---|---|
| spotify | 21 | Spotify app credentials | Playback, search, playlists, recommendations, devices |
| gdrive | 15 | Google OAuth | List, read, upload, share, manage Google Drive files |
| github-actions | 26 | GitHub PAT | PRs, issues, workflow runs, releases, notifications |
| cron | 14 | — | Natural language scheduling |
| n8n | 16 | n8n API key + URL | Trigger workflows, inspect executions |
| vercel | 20 | Vercel token | Deployments, projects, domains, env vars, logs |
| gmail | 8 | Google OAuth | Read, search, send, label Gmail messages |
| gcal | 7 | Google OAuth | Read/write Google Calendar events |
| notes | 8 | — | Local markdown notes |
| memory | 5 | OpenAI key (optional) | Persistent cross-session context |
| system | 4 | — | CPU, RAM, disk, processes |
| weather | 4 | — | Current + forecast via wttr.in (no key) |
| x | 11 | X Bearer Token | Search, timelines, post, like, delete |
| homekit | 6 | Homebridge URL | Smart home control via Homebridge |
🔒 Security
Every credential is encrypted before being written to disk. The raw value never touches config.json.
- Algorithm: AES-256-GCM with a random 12-byte IV per write. Auth tag stored alongside ciphertext.
- Key derivation:
scrypt(machineId, sha256('conductor:keychain:v1'), 32, {N:16384, r:8, p:1}) - Machine ID:
/etc/machine-id(Linux),IOPlatformUUID(macOS), registryMachineGuid(Windows). - Storage:
v2:<iv_hex>:<auth_tag_hex>:<ciphertext_hex>— one file per credential. - Consequence: Credentials are hardware-bound. Copying keychain to another machine produces unreadable files.
~/.conductor/keychain/ directory. Report security issues via GitHub Security Advisories.⌨ CLI Reference
$ conductor status # full health check
$ conductor dashboard # open web dashboard at :4242
$ conductor ai setup # configure AI provider
$ conductor ai switch <name> # switch provider
$ conductor ai test # test connection
$ conductor plugins list # list all plugins
$ conductor plugins enable <p> # enable plugin
$ conductor plugins disable <p> # disable plugin
$ conductor mcp start # start MCP server
$ conductor mcp setup # auto-write Claude Desktop config
$ conductor telegram start # start Telegram bot
$ conductor slack start # start Slack bot
$ conductor auth google # browser OAuth for Google
$ conductor update # git pull + rebuild⬡ MCP Server
Conductor implements the Model Context Protocol. When you run conductor mcp start, every enabled plugin's tools are registered as MCP tools.
Auto-configure Claude Desktop
$ conductor mcp setup # detects OS, writes config, backs up existing| OS | Config path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
✈ Telegram Bot
Uses long polling — no inbound port or webhook needed. The bot runs on your machine and polls Telegram's servers.
- Message @BotFather →
/newbot→ copy the token. - Run
conductor telegram setupand paste the token. - Run
conductor telegram start - Open your bot in Telegram and send any message.
💬 Slack Bot
Uses Socket Mode — no public URL required. Everything runs over a persistent WebSocket from your machine.
Run the guided setup: conductor slack setup
Requires: Bot Token (xoxb-) with scopes app_mentions:read, chat:write, im:history, im:read, im:write and App-Level Token (xapp-) with connections:write.
🔑 Google OAuth
Gmail, Google Calendar, Google Drive, and Gemini all share the same Google OAuth session.
$ conductor auth google # opens browser → log in → token saved to keychainGoogle features require beta access while verification is ongoing. Request access →
google-creds.json file contains the OAuth client ID and secret. It is in .gitignore — do not commit it.🛠 Development
$ npm run dev # tsx watch — restarts on changes
$ npm run build # tsc — compile to dist/
$ npm test # node test-all.mjs --skip-authAdding a Plugin
Create a file in src/plugins/builtin/ implementing the Plugin interface, then register it in src/plugins/builtin/index.ts. It appears in all interfaces automatically.
🔧 Troubleshooting
conductor: command not found
export PATH="$HOME/.local/bin:$PATH"MCP not appearing in Claude Desktop
Run conductor mcp setup then fully quit and relaunch Claude Desktop. If conductor isn't in Claude Desktop's PATH, use the full path in the config file:
$ which conductor # note the full path, use it in claude_desktop_config.jsonReset everything
$ rm -rf ~/.conductor # wipe everything including keychain
$ curl -fsSL https://conductor.thealxlabs.ca/install.sh | bash? FAQ
Is anything sent to AlxLabs servers?
No. Zero telemetry. API calls go directly from your machine to the service (Anthropic, Spotify, Google, etc). AlxLabs is not in the request chain.
Can I run it completely offline?
Yes — set conductor ai switch ollama, run ollama serve, and use local plugins only (notes, calculator, hash, text-tools, etc).
How do I update?
$ conductor update # git pull in ~/.conductor-src + npm run buildCHANGELOG.md
Version history and release notes.
- Command palette (⌘K/Ctrl+K) — navigate, run shell, search notes
- Keyboard navigation — g+key shortcuts, [ sidebar toggle, ? help overlay
- Log text search with amber highlight, level counts, and .txt export
- Note markdown preview, search, word count, and debounced auto-save
- Sortable process table columns, bulk task actions, relative due dates
- Collapsible sidebar with smooth transition, AI provider badge on overview
- Dynamic document.title, favicon, clickable file breadcrumb
- Note editor double-encoding bug (innerHTML → textContent)
- Note save fired on every blur even with no changes
- File editor discarded unsaved changes without warning
- Sparkline first draw at 0px width
- Log ring buffer O(n) shift on every SSE message
- Security checkboxes reflected stale cached config
- Process search filter lost after auto-refresh
- MCP server with full plugin tool exposure
- Web dashboard — files, processes, notes, terminal, logs, credentials, plugins, Docker
- Gmail & Calendar beta plugins via OAuth 2.0
- Hot-swap AI providers with
conductor ai switch - Fixed Spotify token refresh race condition
- Fixed shell plugin path traversal edge cases
- Added
--jsonflag to all CLI commands
- Telegram bot with user ID whitelisting
- AES-256-GCM keychain
- Google Gemini 1.5 provider
- Fixed notes full-text index rebuild on large vaults
Marketplace
Extend Conductor with community plugins. Install any plugin in seconds.
BETA_ACCESS.md
Google features — Gmail, Calendar, Drive — require a one-time invite while we complete Google's OAuth verification. All other plugins work immediately.
🔑 What's in Beta
⚡ How the Auto-Allow Works
When you request access, we don't manually add you — it happens automatically. Here's the exact flow:
conductor auth google or click Connect Google in the dashboard — it works immediately
📋 What Beta Gets You
- Gmail — Read, compose, send, and label emails through natural language
- Google Calendar — Create, update, and query events across all your calendars
- Google Drive — Create, read, and manage files through conversation
- One-click connect — OAuth flow in the dashboard, no extra setup required
~/.conductor/keychain/ — AES-256-GCM encrypted on your machine. We never see them.
📬 Request Access
Processed automatically — usually within 60 seconds.
FAQ
~/.conductor/keychain/. We only store your email to add it to the test users list.LICENSE.md
Apache License 2.0
Apache License 2.0
Copyright © 2026 Alexander Wondwossen / TheAlxLabs
Licensed under the Apache License, Version 2.0. Full text at apache.org/licenses/LICENSE-2.0
- Commercial use — use in commercial products and services
- Modification — fork it, build on top of it
- Distribution — distribute original or modified copies
- No source disclosure required — unlike GPL, you don't have to open-source your modifications
Terms of Service
Last updated: January 2026.
1. Acceptance
By installing or using Conductor you agree to these Terms. Continued use after updates constitutes acceptance.
2. Description
Conductor is open-source local-first software. AlxLabs operates no cloud servers in connection with normal operation. Licensed under Apache 2.0.
3. User Responsibilities
You are solely responsible for all actions taken by your Conductor instance. You agree to comply with all applicable laws and not use Conductor for unauthorized access, malware distribution, or illegal activity.
4. Third-Party Services
Conductor connects to third-party APIs. Your use of each is governed by that service's own terms. AlxLabs is not affiliated with or liable for any third-party service.
5. Disclaimer of Warranties
CONDUCTOR IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES OF ANY KIND. USE IS ENTIRELY AT YOUR OWN RISK.
6. Limitation of Liability
TO THE MAXIMUM EXTENT PERMITTED BY LAW, ALXLABS SHALL NOT BE LIABLE FOR ANY DAMAGES ARISING FROM YOUR USE OF CONDUCTOR.
7. Contact
Privacy Policy
Last updated: January 2026.
1. What We Don't Collect
AlxLabs does not collect, process, store, or transmit: personal identifiable information, conversation history, API keys, usage analytics, crash reports, IP addresses, device fingerprints, or your files. Nothing.
2. Local Data
All persistent data is stored in ~/.conductor/ on your local filesystem. Delete this directory to fully remove all Conductor data. No remote deletion required.
3. AI Provider Interactions
Your prompts go directly from your machine to your chosen AI provider using your own API key. AlxLabs is not an intermediary.
4. Google OAuth Tokens
OAuth tokens stored exclusively in your local AES-256-GCM encrypted keychain. Never transmitted to AlxLabs. We only store your email address when you request Google beta access. Revoke: myaccount.google.com/permissions