n8n
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
npx n8nFair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
npx n8nThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
git clone https://github.com/affaan-m/everything-claude-code.gitAn open-source AI agent that brings the power of Gemini directly into your terminal.
npx @google/gemini-cliDescribe any UI in natural language. Watch it appear on the infinite canvas in real-time with streaming animation. Modify existing designs by selecting elements and chatting.
The orchestrator decomposes complex pages into spatial sub-tasks. Multiple AI agents work on different sections simultaneously โ hero, features, footer โ all streaming in parallel.
Automatically adapts to each model's capabilities. Claude gets full prompts with thinking; GPT-4o/Gemini disable thinking; smaller models (MiniMax, Qwen, Llama) get simplified prompts for reliable output.
One-click install into Claude Code, Codex, Gemini, OpenCode, Kiro, or Copilot CLIs. Design from your terminal โ read, create, and modify .op files through any MCP-compatible agent.
.op files are JSON โ human-readable, Git-friendly, diffable. Design variables generate CSS custom properties. Code export to React + Tailwind or HTML + CSS.
Web app + native desktop on macOS, Windows, and Linux via Electron. Auto-updates from GitHub Releases. .op file association โ double-click to open.
opControl the design tool from your terminal. op design, op insert, op export โ batch design DSL, node manipulation, code export. Pipe in from files or stdin. Works with desktop app or web server.
Export to React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native โ all from one .op file. Design variables become CSS custom properties.
# Install dependencies
bun install
# Start dev server at http://localhost:3000
bun --bun run dev
Or run as a desktop app:
bun run electron:dev
Multiple image variants are available โ pick the one that fits your needs:
| Image | Size | Includes |
|---|---|---|
openpencil:latest | ~226 MB | Web app only |
openpencil-claude:latest | โ | + Claude Code CLI |
openpencil-codex:latest | โ | + Codex CLI |
openpencil-opencode:latest | โ | + OpenCode CLI |
openpencil-copilot:latest | โ | + GitHub Copilot CLI |
openpencil-gemini:latest | โ | + Gemini CLI |
openpencil-full:latest | ~1 GB | All CLI tools |
Run (web only):
docker run -d -p 3000:3000 ghcr.io/zseven-w/openpencil:latest
Run with AI CLI (e.g. Claude Code):
The AI chat relies on Claude CLI OAuth login. Use a Docker volume to persist the login session:
# Step 1 โ Login (one-time)
docker volume create openpencil-claude-auth
docker run -it --rm \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest claude login
# Step 2 โ Start
docker run -d -p 3000:3000 \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest
Build locally:
# Base (web only)
docker build --target base -t openpencil .
# With a specific CLI
docker build --target with-claude -t openpencil-claude .
# Full (all CLIs)
docker build --target full -t openpencil-full .
Prompt to UI
Multi-Agent Support
| Agent | Setup |
|---|---|
| Claude Code | No config โ uses Claude Agent SDK with local OAuth |
| Codex CLI | Connect in Agent Settings (Cmd+,) |
| OpenCode | Connect in Agent Settings (Cmd+,) |
| GitHub Copilot | copilot login then connect in Agent Settings (Cmd+,) |
| Gemini CLI | Connect in Agent Settings (Cmd+,) |
Model Capability Profiles โ automatically adapts prompts, thinking mode, and timeouts per model tier. Full-tier models (Claude) get complete prompts; standard-tier (GPT-4o, Gemini, DeepSeek) disable thinking; basic-tier (MiniMax, Qwen, Llama, Mistral) get simplified nested-JSON prompts for maximum reliability.
MCP Server
.op files via any MCP-compatible agentdesign_skeleton โ design_content โ design_refine for higher-fidelity multi-section designsCode Generation
opInstall globally and control the design tool from your terminal:
npm install -g @zseven-w/openpencil
op start # Launch desktop app
op design @landing.txt # Batch design from file
op insert '{"type":"RECT"}' # Insert a node
op export react --out . # Export to React + Tailwind
op import:figma design.fig # Import Figma file
cat design.dsl | op design - # Pipe from stdin
Supports three input methods: inline string, @filepath (read from file), or - (read from stdin). Works with desktop app or web dev server. See CLI README for full command reference.
Canvas & Drawing
Design System
$variable referencesvar(--name) in code outputFigma Import
.fig files with layout, fills, strokes, effects, text, images, and vectors preservedDesktop App
.op file association โ double-click to open, single-instance lock| Frontend | React 19 ยท TanStack Start ยท Tailwind CSS v4 ยท shadcn/ui |
| Canvas | CanvasKit/Skia (WASM, GPU-accelerated) |
| State | Zustand v5 |
| Server | Nitro |
| Desktop | Electron 35 |
| CLI | op โ terminal control, batch design DSL, code export |
| AI | Anthropic SDK ยท Claude Agent SDK ยท OpenCode SDK ยท Copilot SDK |
| Runtime | Bun ยท Vite 7 |
| File format | .op โ JSON-based, human-readable, Git-friendly |
openpencil/
โโโ apps/
โ โโโ web/ TanStack Start web app
โ โ โโโ src/
โ โ โ โโโ canvas/ CanvasKit/Skia engine โ drawing, sync, layout
โ โ โ โโโ components/ React UI โ editor, panels, shared dialogs, icons
โ โ โ โโโ services/ai/ AI chat, orchestrator, design generation, streaming
โ โ โ โโโ stores/ Zustand โ canvas, document, pages, history, AI
โ โ โ โโโ mcp/ MCP server tools for external CLI integration
โ โ โ โโโ hooks/ Keyboard shortcuts, file drop, Figma paste
โ โ โ โโโ uikit/ Reusable component kit system
โ โ โโโ server/
โ โ โโโ api/ai/ Nitro API โ streaming chat, generation, validation
โ โ โโโ utils/ Claude CLI, OpenCode, Codex, Copilot wrappers
โ โโโ desktop/ Electron desktop app
โ โ โโโ main.ts Window, Nitro fork, native menu, auto-updater
โ โ โโโ ipc-handlers.ts Native file dialogs, theme sync, prefs IPC
โ โ โโโ preload.ts IPC bridge
โ โโโ cli/ CLI tool โ `op` command
โ โโโ src/commands/ Design, document, export, import, node, page, variable commands
โ โโโ connection.ts WebSocket connection to running app
โ โโโ launcher.ts Auto-detect and launch desktop app or web server
โโโ packages/
โ โโโ pen-types/ Type definitions for PenDocument model
โ โโโ pen-core/ Document tree ops, layout engine, variables
โ โโโ pen-codegen/ Code generators (React, HTML, Vue, Flutter, ...)
โ โโโ pen-figma/ Figma .fig file parser and converter
โ โโโ pen-renderer/ Standalone CanvasKit/Skia renderer
โ โโโ pen-sdk/ Umbrella SDK (re-exports all packages)
โโโ .githooks/ Pre-commit version sync from branch name
| Key | Action | Key | Action | |
|---|---|---|---|---|
V | Select | Cmd+S | Save | |
R | Rectangle | Cmd+Z | Undo | |
O | Ellipse | Cmd+Shift+Z | Redo | |
L | Line | Cmd+C/X/V/D | Copy/Cut/Paste/Duplicate | |
T | Text | Cmd+G | Group | |
F | Frame | Cmd+Shift+G | Ungroup | |
P | Pen tool | Cmd+Shift+E | Export | |
H | Hand (pan) | Cmd+Shift+C | Code panel | |
Del | Delete | Cmd+Shift+V | Variables panel |
bun --bun run dev # Dev server (port 3000)
bun --bun run build # Production build
bun --bun run test # Run tests (Vitest)
npx tsc --noEmit # Type check
bun run bump <version> # Sync version across all package.json
bun run electron:dev # Electron dev
bun run electron:build # Electron package
bun run cli:dev # Run CLI from source
bun run cli:compile # Compile CLI to dist
Contributions are welcome! See CLAUDE.md for architecture details and code style.
git config core.hooksPath .githooksgit checkout -b feat/my-featurenpx tsc --noEmit && bun --bun run testfeat(canvas): add rotation snappingmain.fig importop) for terminal controlMIT โ Copyright (c) 2026 ZSeven-W
[ / ] | Reorder | Cmd+J | AI chat |
| Arrows | Nudge 1px | Cmd+, | Agent settings |
Cmd+Alt+U | Boolean union | Cmd+Alt+S | Boolean subtract |
Cmd+Alt+I | Boolean intersect |