One AI. Every tool. Any interface.
Conductor is a universal AI integration hub that connects Claude, GPT-4o, Gemini, Ollama, and OpenRouter to 150+ tools across 27 plugins — exposed simultaneously as an MCP server, Slack bot, Telegram bot, web dashboard with live chat, and HTTP API.
Most AI wrappers give you one interface. Conductor gives you five — simultaneously. Same plugins, same tools, same conversation memory, whether you're in Slack, Telegram, Claude Desktop (MCP), or the web browser.
Example: Send one message: "Find my 3 urgent emails, add them to my calendar, and notify me on Slack." Conductor automatically chains Gmail → Google Calendar → Slack in a single agent loop — with approval gates if any step is sensitive.
You: "Find my urgent emails, add them to my calendar, notify me on Slack."
Conductor:
1. persona → "general"
2. gmail_search() → 2 urgent emails
3. gcal_create_event() × 2 → events created
4. slack_send_message() → "Done: 2 events added"
# macOS / Linux
curl -fsSL https://conductor.thealxlabs.ca/install.sh | bash
# Windows (PowerShell)
irm https://conductor.thealxlabs.ca/install.ps1 | iexThen open the web dashboard with live AI chat:
conductor dashboard start
# → http://localhost:4242Or wire it into Claude Desktop:
conductor mcp setup # auto-configures Claude DesktopRequirements: Node.js ≥ 18
The dashboard includes a full AI chat interface — send messages, watch tool call chips appear inline, see results in real time. No CLI needed for demos.
conductor ai switch gemini # switch without restart
conductor ai switch claude
conductor ai switch ollama # fully local, no API keyconductor proactive start # runs every 30 min by defaultConductor gathers context (CPU, emails, calendar, activity), reasons about it, takes action, and notifies you — without you asking. Approval gates pause the loop for sensitive operations.
No secrets in config.json. Every credential is encrypted with a key derived from your machine's hardware ID via scrypt. Keys cannot be transferred to other machines.
Browse, enable, and configure all 27 plugins from the web UI. See which need credentials, toggle them on/off, get the right setup instructions.
┌─────────────────────────────────────────────────────────────┐
│ Interfaces │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web │ │ Slack │ │Telegram │ │ MCP │ │
│ │Dashboard │ │ Bot │ │ Bot │ │ (Claude │ │
│ │ + Chat │ │ │ │ │ │ Desktop) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└───────┼─────────────┼─────────────┼──────────────┼─────────┘
└─────────────┴──────┬──────┴──────────────┘
│
┌──────────────▼──────────────┐
│ Conductor │
│ (Orchestrator + Agent Loop)│
└──────┬───────────┬──────────┘
│ │
┌──────────▼──┐ ┌───▼──────────┐
│ AI Manager │ │ Plugin Manager│
│ │ │ 27 Plugins │
│ Claude │ │ 150+ Tools │
│ OpenAI │ │ │
│ Gemini │ │ Gmail gcal │
│ Ollama │ │ GitHub Slack │
│ OpenRouter │ │ Spotify ... │
│ Maestro │ │ │
└──────────────┘ └──────────────┘
│
┌──────────▼──────────┐
│ Security Layer │
│ AES-256-GCM │
│ Hardware-tied keys │
└─────────────────────┘
1. User message → stored in SQLite conversation history
2. Persona detection (AI classifies: coder / social / researcher / general)
3. System prompt injected based on persona
4. AI provider called with full history + all enabled tools
5. If tool calls returned → execute, append results
6. If requiresApproval tool → pause, notify user via Slack/Telegram
7. Repeat until AI returns plain text
8. Final response returned to the interface
| Interface | Command | What it does |
|---|---|---|
| Web Dashboard + Chat | conductor dashboard start |
Browser UI with live AI chat, plugin manager, system monitor, marketplace |
| MCP Server | conductor mcp setup |
Native tool integration in Claude Desktop |
| Slack Bot | conductor slack start |
Respond to @conductor mentions and DMs |
| Telegram Bot | conductor telegram start |
Full chat + /approve / /deny commands |
| Lumen HTTP API | auto-started with dashboard | POST /api/lumen/ask with Bearer token auth |
Credentials are encrypted using AES-256-GCM with a master key derived from your machine's hardware ID via scrypt. Secrets cannot be decrypted on any other machine.
- Keychain location:
~/.conductor/keychain/(mode0700) - No raw secrets in
config.json— ever - Timing-safe API key comparison
- Approval gates for sensitive autonomous actions
- localhost-only dashboard by default (bind:
127.0.0.1:4242)
| Plugin | What it does |
|---|---|
| calculator | Math, unit conversions, date calculations |
| colors | Color conversion, palettes, contrast checking |
| crypto | Live cryptocurrency prices |
| fun | Jokes, trivia, quotes, dice |
| hash | SHA-256, MD5, bcrypt, UUID, password generator |
| network | DNS lookup, IP geolocation, port scan |
| text-tools | JSON format, regex, word count, string transforms |
| timezone | World clock, timezone conversion |
| translate | Translate between 100+ languages |
| url-tools | Expand short URLs, HTTP status, headers |
| weather | Current conditions + 7-day forecast |
| system | CPU, memory, disk, processes, shell commands |
| memory | Long-term memory across conversations |
| notes | Markdown notes in ~/.conductor/notes/ |
| cron | Schedule recurring tasks with natural language |
| Plugin | Auth | What it does |
|---|---|---|
| gmail | Google OAuth | Read, search, send Gmail |
| gcal | Google OAuth | Google Calendar events |
| gdrive | Google OAuth | Browse, read, upload Drive files |
| github | GitHub Token | Repos, issues, PRs, gists |
| github-actions | GitHub Token | CI/CD, releases, code search |
| vercel | Vercel Token | Deployments, projects, domains |
| n8n | n8n API Key | Automation workflow triggers |
| notion | Notion Key | Read/write databases and pages |
| spotify | Spotify OAuth | Full playback control + library |
| x | X API Key | Post tweets, read timeline |
| homekit | HomeKit URL | Control smart home devices |
| slack | Slack Token | Send messages, read channels |
| todoist | Todoist Token | Tasks, projects, priorities |
"What's the weather in Berlin this week?"
"Translate this paragraph to Japanese."
"Find my 3 latest unread emails and summarize them."
"Schedule a meeting with Alex tomorrow at 2pm."
"Play Discover Weekly on Spotify, queue 5 similar tracks."
"Search GitHub for trending TypeScript repos."
"Generate a UUID and a secure 20-character password."
"Show me my top CPU-consuming processes."
"Check if my website is responding."
"Remember that my AWS key expires on March 31."
"What did I work on yesterday?" (uses memory plugin)
conductor proactive start # Every 30 minutes
conductor proactive start --interval 10 # Every 10 minutesEach cycle: gather system context → AI reasons → take action → notify via Slack/Telegram → log everything. Approval gates pause the loop for sensitive operations.
Conductor auto-classifies every message before routing to tools:
| Persona | Triggered by | Tool focus |
|---|---|---|
| Coder | code, debug, git, bash | github-actions, vercel, system, hash |
| Social | tweets, Slack, messages | x, slack, gmail |
| Researcher | search, summarize, read | weather, translate, url-tools |
| General | calendar, emails, everything else | gcal, gmail, memory, notes |
Expose your local Ollama as an authenticated remote endpoint — for CI/CD pipelines and scripts that don't have shell access.
# Generate an API key
curl -s -X POST http://localhost:4242/api/lumen/key | jq -r .key
# Call from any machine
curl -X POST http://YOUR-IP:4242/api/lumen/ask \
-H "Authorization: Bearer cnd_..." \
-H "Content-Type: application/json" \
-d '{"task": "check git status and show changed files"}'conductor status # Overall health check
conductor dashboard start # Web dashboard + chat (port 4242)
conductor ai setup # Configure AI provider
conductor ai switch <provider> # Hot-switch provider
conductor mcp setup # Configure Claude Desktop
conductor plugins list # List all plugins
conductor plugins enable <name> # Enable a plugin
conductor proactive start # Start autonomous mode
conductor slack start # Start Slack bot
conductor telegram start # Start Telegram bot
conductor auth google # Google OAuth flow~/.conductor/
├── config.json # AI provider, enabled plugins, settings
├── conductor.db # SQLite: conversations, memory, logs
├── keychain/ # AES-256-GCM encrypted credentials
├── notes/ # Markdown notes
└── logs/ # Activity logs
npm run dev # Watch mode (tsx)
npm run build # Compile TypeScript
npm test # Run tests (skips auth plugins)Implement Plugin in src/plugins/builtin/ and register it in src/plugins/builtin/index.ts. It immediately appears across all interfaces.
export const myPlugin: Plugin = {
name: 'my-plugin',
description: 'What this plugin does',
version: '1.0.0',
initialize: async (conductor) => { /* setup */ },
isConfigured: () => true,
getTools: () => [{
name: 'my_tool',
description: 'What this tool does',
inputSchema: {
type: 'object',
properties: { query: { type: 'string' } },
required: ['query'],
},
handler: async ({ query }) => `Result: ${query}`,
}],
};Apache-2.0 — Alexander Wondwossen / TheAlxLabs