Local-first AI task runner. Build automations by chatting.
No cloud. No subscription. Your tools, your data, your machine.
I built this because Goose was too hard to extend and Claude Desktop needed a Mac.
Workbench is the cross-platform, open, easy-to-extend alternative. Create new tools by asking AI to write them. Chain tools together. Run everything locally.
git clone https://github.com/YakStacks/Workbench.git
cd Workbench
npm install
npm run devAdd your API key in Settings tab (supports OpenRouter, OpenAI, or Azure OpenAI).
- π¬ Chat - Messenger-style AI conversation with tool access
- π§ 11 Built-in Tools - Weather, clipboard, files, CSV analysis, and more
- βοΈ Tool Chains - Connect tools with
{{lastResult}}interpolation - π Plugin System - Drop a folder in
plugins/, restart, done - π οΈ PipeWrench - MCP server diagnostics built-in
- π File Browser - Safe, sandboxed file access
Ask the AI to use tools naturally:
"What's the weather in Tokyo?"
The AI calls weather.temperature, gets the result, and responds conversationally.
Build multi-step automations in the Chains tab:
- Step 1:
example.echoβ{"text": "Hello"}β saves tostep1 - Step 2:
example.currentTimeβ{}β saves tostep2
Reference previous results with {{step1.content}} or {{lastResult}}.
Ask the AI:
"Create a plugin that fetches the top story from Hacker News"
Copy the code to plugins/hackernews/index.js, restart, and your new tool appears.
| Tool | Description |
|---|---|
example.echo |
Echo text back |
example.helloWorld |
Simple greeting |
example.currentTime |
Current date/time |
weather.temperature |
Weather by city |
system.clipboardHistory |
Clipboard access |
data.csvAnalyzer |
Parse and analyze CSVs |
web.urlSummary |
Summarize web pages |
media.youtubeTranscript |
Get YouTube transcripts |
system.fileWatcher |
Monitor file changes |
workbench.convertArtifact |
Convert Claude artifacts |
debug.mcpDoctor |
Diagnose MCP servers |
debug.mcpTrace |
Trace MCP protocol |
debug.mcpTest |
Quick MCP connection test |
Plus 12 builtin.* system tools for files, shell, clipboard, and more.
Create a folder in plugins/ with an index.js:
// plugins/my-tool/index.js
module.exports.register = (api) => {
api.registerTool({
name: 'my.tool',
description: 'Does something useful',
inputSchema: {
type: 'object',
properties: {
input: { type: 'string', description: 'The input' }
},
required: ['input']
},
run: async (params) => {
return {
content: `You said: ${params.input}`,
metadata: { timestamp: new Date().toISOString() }
};
}
});
};Restart Workbench or click Refresh Plugins. Your tool appears in the Tools tab.
See PLUGIN_API.md for the full guide.
Workbench supports multiple LLM providers. Configure in Settings:
| Provider | What You Need |
|---|---|
| OpenRouter | API key from openrouter.ai |
| OpenAI | API key from platform.openai.com |
| Azure OpenAI | Endpoint URL, API key, deployment name |
OpenRouter is recommended - it gives you access to Claude, GPT-4, Llama, and dozens of other models with one API key.
# Development
npm run dev
# Production build
npm run build
npm start
# Package installer
npm run package # Windows
npm run package:all # All platformsInstallers output to release/ folder.
Workbench/
βββ src/App.tsx # React UI (single file)
βββ main.ts # Electron main process
βββ plugins/ # Drop-in plugins
β βββ echo/
β βββ weather_temperature/
β βββ pipewrench/
β βββ ...
βββ build/ # Icons and assets
βββ dist/ # Built frontend
- β Chat with AI
- β 11 plugins + builtin tools
- β Tool chaining
- β Plugin system
- β PipeWrench diagnostics
- π² MCP server integration (via PipeWrench proxy)
- π² Chat persistence (SQLite)
- π² Natural language tool dispatch
- π² Keyboard shortcuts
MCP servers don't connect - Electron has stdio pipe issues on Windows. Use PipeWrench standalone (pipewrench proxy) as a workaround, or wait for v0.2 which will include proper MCP support. See MCP_KNOWN_ISSUES.md.
MIT Β© 2025 YakStacks
Any questions or concerns? Start a Discussion or submit an issue. I'd love to hear from you.
Local-first. Open source. Yours to extend.