{"id":45673569,"url":"https://github.com/op7418/CodePilot","last_synced_at":"2026-03-04T15:00:37.479Z","repository":{"id":336864538,"uuid":"1151411061","full_name":"op7418/CodePilot","owner":"op7418","description":"A desktop GUI for Claude Code — chat, code, and manage projects visually. Built with Electron + Next.js.","archived":false,"fork":false,"pushed_at":"2026-03-01T14:59:23.000Z","size":4587,"stargazers_count":2503,"open_issues_count":49,"forks_count":264,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-03-01T18:42:01.540Z","etag":null,"topics":["ai","anthropic","claude","claude-code","desktop-app","electron","gui","nextjs"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/op7418.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-06T12:38:55.000Z","updated_at":"2026-03-01T18:14:53.000Z","dependencies_parsed_at":"2026-02-12T10:04:47.610Z","dependency_job_id":null,"html_url":"https://github.com/op7418/CodePilot","commit_stats":null,"previous_names":["op7418/codepilot"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/op7418/CodePilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/op7418%2FCodePilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/op7418%2FCodePilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/op7418%2FCodePilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/op7418%2FCodePilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/op7418","download_url":"https://codeload.github.com/op7418/CodePilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/op7418%2FCodePilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30084685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T13:22:36.021Z","status":"ssl_error","status_checked_at":"2026-03-04T13:20:45.750Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","anthropic","claude","claude-code","desktop-app","electron","gui","nextjs"],"created_at":"2026-02-24T12:00:24.257Z","updated_at":"2026-03-04T15:00:37.470Z","avatar_url":"https://github.com/op7418.png","language":"TypeScript","readme":"\u003cimg src=\"docs/icon-readme.png\" width=\"32\" height=\"32\" alt=\"CodePilot\" style=\"vertical-align: middle; margin-right: 8px;\" /\u003e CodePilot\n===\n\n**A desktop GUI client for Claude Code** -- chat, code, and manage projects through a polished visual interface instead of the terminal.\n\n[![GitHub release](https://img.shields.io/github/v/release/op7418/CodePilot)](https://github.com/op7418/CodePilot/releases)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey)](https://github.com/op7418/CodePilot/releases)\n[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n[中文文档](./README_CN.md) | [日本語](./README_JA.md)\n\n---\n\n## Features\n\n- **Conversational coding** -- Stream responses from Claude in real time with full Markdown rendering, syntax-highlighted code blocks, and tool-call visualization.\n- **Session management** -- Create, rename, archive, and resume chat sessions. Conversations are persisted locally in SQLite so nothing is lost between restarts.\n- **Project-aware context** -- Pick a working directory per session. The right panel shows a live file tree and file previews so you always know what Claude is looking at.\n- **Resizable panels** -- Drag the edges of the chat list and right panel to adjust their width. Your preferred sizes are saved across sessions.\n- **File \u0026 image attachments** -- Attach files and images directly in the chat input. Images are sent as multimodal vision content for Claude to analyze.\n- **Permission controls** -- Approve, deny, or auto-allow tool use on a per-action basis. Choose between permission modes to match your comfort level.\n- **Multiple interaction modes** -- Switch between *Code*, *Plan*, and *Ask* modes to control how Claude behaves in each session.\n- **Model selector** -- Switch between Claude models (Opus, Sonnet, Haiku) mid-conversation.\n- **MCP server management** -- Add, configure, and remove Model Context Protocol servers directly from the Extensions page. Supports `stdio`, `sse`, and `http` transport types.\n- **Custom skills** -- Define reusable prompt-based skills (global or per-project) that can be invoked as slash commands during chat.\n- **Settings editor** -- Visual and JSON editors for your `~/.claude/settings.json`, including permissions and environment variables.\n- **Token usage tracking** -- See input/output token counts and estimated cost after every assistant response.\n- **Auto update check** -- The app periodically checks for new releases and notifies you when an update is available.\n- **Dark / Light theme** -- One-click theme toggle in the navigation rail.\n- **Slash commands** -- Built-in commands like `/help`, `/clear`, `/cost`, `/compact`, `/doctor`, `/review`, and more.\n- **Electron packaging** -- Ships as a desktop app with a hidden title bar, bundled Next.js server, graceful shutdown, and automatic port allocation.\n\n---\n\n## Screenshots\n\n![CodePilot](docs/screenshot.png)\n\n---\n\n## Prerequisites\n\n\u003e **Important**: CodePilot calls the Claude Code Agent SDK under the hood. Make sure `claude` is available on your `PATH` and that you have authenticated (`claude login`) before launching the app.\n\n| Requirement | Minimum version |\n|---|---|\n| **Node.js** | 18+ |\n| **Claude Code CLI** | Installed and authenticated (`claude --version` should work) |\n| **npm** | 9+ (ships with Node 18) |\n\n---\n\n## Download\n\nPre-built releases are available on the [**Releases**](https://github.com/op7418/CodePilot/releases) page. Releases are built automatically via GitHub Actions for all platforms.\n\n### Supported Platforms\n\n- **macOS** -- arm64 (Apple Silicon) and x64 (Intel) distributed as `.dmg`\n- **Windows** -- NSIS installer (`.exe`) bundling x64 + arm64\n- **Linux** -- x64 and arm64 distributed as `.AppImage`, `.deb`, and `.rpm`\n\n---\n\n## Quick Start\n\n```bash\n# Clone the repository\ngit clone https://github.com/op7418/CodePilot.git\ncd CodePilot\n\n# Install dependencies\nnpm install\n\n# Start in development mode (browser)\nnpm run dev\n\n# -- or start the full Electron app in dev mode --\nnode scripts/build-electron.mjs   # compile Electron main process (first time only)\nnpm run electron:dev\n```\n\nThen open [http://localhost:3000](http://localhost:3000) (browser mode) or wait for the Electron window to appear.\n\n---\n\n## Installation Troubleshooting\n\nCodePilot is not code-signed yet, so your operating system will display a security warning the first time you open it.\n\n### macOS\n\nYou will see a dialog that says **\"Apple cannot check it for malicious software\"**.\n\n**Option 1 -- Right-click to open**\n\n1. Right-click (or Control-click) `CodePilot.app` in Finder.\n2. Select **Open** from the context menu.\n3. Click **Open** in the confirmation dialog.\n\n**Option 2 -- System Settings**\n\n1. Open **System Settings** \u003e **Privacy \u0026 Security**.\n2. Scroll down to the **Security** section.\n3. You will see a message about CodePilot being blocked. Click **Open Anyway**.\n4. Authenticate if prompted, then launch the app.\n\n**Option 3 -- Terminal command**\n\n```bash\nxattr -cr /Applications/CodePilot.app\n```\n\nThis strips the quarantine attribute so macOS will no longer block the app.\n\n### Windows\n\nWindows SmartScreen will block the installer or executable.\n\n**Option 1 -- Run anyway**\n\n1. On the SmartScreen dialog, click **More info**.\n2. Click **Run anyway**.\n\n**Option 2 -- Disable App Install Control**\n\n1. Open **Settings** \u003e **Apps** \u003e **Advanced app settings**.\n2. Toggle **App Install Control** (or \"Choose where to get apps\") to allow apps from anywhere.\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|---|---|\n| Framework | [Next.js 16](https://nextjs.org/) (App Router) |\n| Desktop shell | [Electron 40](https://www.electronjs.org/) |\n| UI components | [Radix UI](https://www.radix-ui.com/) + [shadcn/ui](https://ui.shadcn.com/) |\n| Styling | [Tailwind CSS 4](https://tailwindcss.com/) |\n| Animation | [Motion](https://motion.dev/) (Framer Motion) |\n| AI integration | [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) |\n| Database | [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) (embedded, per-user) |\n| Markdown | react-markdown + remark-gfm + rehype-raw + [Shiki](https://shiki.style/) |\n| Streaming | [Vercel AI SDK](https://sdk.vercel.ai/) helpers + Server-Sent Events |\n| Icons | [Hugeicons](https://hugeicons.com/) + [Lucide](https://lucide.dev/) |\n| Testing | [Playwright](https://playwright.dev/) |\n| CI/CD | [GitHub Actions](https://github.com/features/actions) (auto-build + release on tag) |\n| Build / Pack | electron-builder + esbuild |\n\n---\n\n## Project Structure\n\n```\ncodepilot/\n├── .github/workflows/      # CI/CD: multi-platform build \u0026 auto-release\n├── electron/                # Electron main process \u0026 preload\n│   ├── main.ts              # Window creation, embedded server lifecycle\n│   └── preload.ts           # Context bridge\n├── src/\n│   ├── app/                 # Next.js App Router pages \u0026 API routes\n│   │   ├── chat/            # New-chat page \u0026 [id] session page\n│   │   ├── extensions/      # Skills + MCP server management\n│   │   ├── settings/        # Settings editor\n│   │   └── api/             # REST + SSE endpoints\n│   │       ├── chat/        # Sessions, messages, streaming, permissions\n│   │       ├── files/       # File tree \u0026 preview\n│   │       ├── plugins/     # Plugin \u0026 MCP CRUD\n│   │       ├── settings/    # Settings read/write\n│   │       ├── skills/      # Skill CRUD\n│   │       └── tasks/       # Task tracking\n│   ├── components/\n│   │   ├── ai-elements/     # Message bubbles, code blocks, tool calls, etc.\n│   │   ├── chat/            # ChatView, MessageList, MessageInput, streaming\n│   │   ├── layout/          # AppShell, NavRail, ResizeHandle, RightPanel\n│   │   ├── plugins/         # MCP server list \u0026 editor\n│   │   ├── project/         # FileTree, FilePreview, TaskList\n│   │   ├── skills/          # SkillsManager, SkillEditor\n│   │   └── ui/              # Radix-based primitives (button, dialog, tabs, ...)\n│   ├── hooks/               # Custom React hooks (usePanel, ...)\n│   ├── lib/                 # Core logic\n│   │   ├── claude-client.ts # Agent SDK streaming wrapper\n│   │   ├── db.ts            # SQLite schema, migrations, CRUD\n│   │   ├── files.ts         # File system helpers\n│   │   ├── permission-registry.ts  # Permission request/response bridge\n│   │   └── utils.ts         # Shared utilities\n│   └── types/               # TypeScript interfaces \u0026 API contracts\n├── electron-builder.yml     # Packaging configuration\n├── package.json\n└── tsconfig.json\n```\n\n---\n\n## Development\n\n```bash\n# Run Next.js dev server only (opens in browser)\nnpm run dev\n\n# Compile the Electron main process (required before first run)\nnode scripts/build-electron.mjs\n\n# Run the full Electron app in dev mode\n# (starts Next.js + waits for it, then opens Electron)\nnpm run electron:dev\n\n# Production build (Next.js static export)\nnpm run build\n\n# Build Electron distributable + Next.js\nnpm run electron:build\n\n# Package for specific platforms\nnpm run electron:pack:mac     # macOS DMG (arm64 + x64)\nnpm run electron:pack:win     # Windows NSIS installer\nnpm run electron:pack:linux   # Linux AppImage, deb, rpm\n```\n\n### CI/CD\n\nThe project uses GitHub Actions for automated builds. Pushing a `v*` tag triggers a full multi-platform build and automatically creates a GitHub Release with all artifacts:\n\n```bash\ngit tag v0.8.1\ngit push origin v0.8.1\n# CI builds Windows + macOS + Linux, then publishes the release\n```\n\nYou can also manually trigger builds for individual platforms from the Actions tab.\n\n### Notes\n\n- The Electron main process (`electron/main.ts`) forks the Next.js standalone server and connects to it over `127.0.0.1` with a random free port.\n- Chat data is stored in `~/.codepilot/codepilot.db` (or `./data/codepilot.db` in dev mode).\n- The app uses WAL mode for SQLite, so concurrent reads are fast.\n\n---\n\n## Contributing\n\nContributions are welcome. To get started:\n\n1. Fork the repository and create a feature branch.\n2. Install dependencies with `npm install`.\n3. Run `npm run electron:dev` to test your changes locally.\n4. Make sure `npm run lint` passes before opening a pull request.\n5. Open a PR against `main` with a clear description of what changed and why.\n\nPlease keep PRs focused -- one feature or fix per pull request.\n\n---\n\n## License\n\nMIT\n","funding_links":[],"categories":["TypeScript","GUI \u0026 IDE","🖥️ Clients \u0026 GUIs","Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fop7418%2FCodePilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fop7418%2FCodePilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fop7418%2FCodePilot/lists"}