惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
Security @ Cisco Blogs
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
博客园 - 叶小钗
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
Forbes - Security
Forbes - Security
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Schneier on Security
Schneier on Security
C
Cisco Blogs
美团技术团队
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
月光博客
月光博客
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News

Show HN

GitHub - steveking-gh/firmion: Firmion is DSL and engine for firmware image generation. GitHub - villagesql/villagesql-skills: Agent skills for VillageSQL - gemini-cli-extension; claude-code-plugin GitHub - flightdeckhq/flightdeck: Observability and control plane for AI agents. CSP Radar GitHub - Light-Heart-Labs/DreamServer: Turn your PC, Mac, or Linux box into an AI server. LLM inference, chat UI, voice, agents, workflows, RAG, and image generation. GitHub - Diplomat-ai/diplomat-agent-ts: What can your TypeScript AI agent do to the real world? Scan your code. See which tool calls have zero checks Code Block Selector - Visual Studio Marketplace Prometheus dependency graph — interactive showcase | Riftmap Show HN: I made a vi-like modal keyboard plugin for Figma GitHub - run-llama/liteparse: A fast, helpful, and open-source document parser GitHub - dalemyers/Roar: A macOS CLI tool for notifications GitHub - district-solutions/open-agent-tools-coder: Enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,900+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models. GitHub - progapandist/stripeek: A local TUI proxy for real-time Stripe API debugging, built for navigating complex payloads fast. GitHub - sir1st/hermes-desktop: All-in-one cross-platform desktop app for Hermes Agent — bundles Python + hermes-agent + hermes-web-ui GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: Generate Claude Code Workflows using Spec Driven Development approach GitHub - nixys/nxs-universal-chart: The Helm chart you can use to install any of your applications into Kubernetes/OpenShift Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code. GitHub - tamerh/enju: Coordinating Humans, AI Agents, and Compute as Peers on a Shared Workflow Graph Show HN: Continuity-auth – Respect-weighted rate limits for the open web GitHub - luml-ai/luml: AI lifecycle platform where engineers and agents track experiments, train models, and ship to production. GitHub - mrdanielcasper/CoreTex: A UNIX-inspired, biomimetic, flat-file AI harness and knowledge engine. GitHub - clemg/pierre-github: Pierre's diffs.com and trees.software for Github GitHub - lyriks-io/unspaghettit: Behavior-driven AI development without prompt spaghetti. GitHub - sofumel/claude-handoff-revive: Resume Claude Code work after rate/usage/context limits without replaying the prior transcript. Auto-saves at 90%/95% usage. Plugin-installable, 10 languages. GitHub - dotexorg/saferpc: Typed, end-to-end encrypted RPC over any bidirectional channel. GitHub - BeeZeeAgent/beezee: Agent harness orchestration Legato Next.js Boilerplate for Internal Tools · CoreUI GitHub - clark-labs-inc/clark-hash: Clark Hash, 32x smaller searchable sketches for embeddings GitHub - ZeroPointRepo/youtube-mcp: The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free. Typing Mastery — climb toward 100+ WPM, deliberately GitHub - Andebugulin/Awareen GitHub - fayzan123/claude-workflow-composer: Visual desktop app for composing multi-agent coding workflows. Drag agents, attach skills and MCPs, wire handoffs, export to .claude/ GitHub - harshaneel/humanize: Best static AI text humanizer. Two research-grounded skills that work in any LLM (Claude, ChatGPT, Gemini, Codex): humanize beats perplexity-based detectors, ai-check produces forensic scoring with evidence-quoted flags. Nine levers, 50+ peer-reviewed sources, 2024-2026 detection literature. GitHub - StackOneHQ/stack-nudge GitHub - nodes-app/swift-markdown-engine: A native AppKit Markdown editor for macOS, built on TextKit 2 and bridged to SwiftUI. We hardened an LLM agent. Each defense we added made it more exploitable. GitHub - alkait/WhatsKept: Agent-queryable WhatsApp history from an iOS backup — a single Go binary. GitHub - octelium/cordium: Open-source, general-purpose sandbox platform for devs and AI agents that provides identity-based secure access to infrastructure without credentials. WAR.GOV/UFO Microfilm5 GitHub - scosman/videowright: Build animated explainer videos with your coding agent GitHub - dipankar/dscode: The code editor you can take apart. GitHub - zoharbabin/web-researcher-mcp: MCP server (Go) for AI assistants: web search, content extraction, academic/patent/news research. Multi-provider routing, 4-tier scraping, search lenses. Works with Claude, Cursor, and any MCP client. GitHub - ruvnet/RuView: π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video. GitHub - scanaislop/aislop: Catch the slop AI coding agents leave in your code: narrative comments, swallowed exceptions, as-any casts, dead code, oversized functions. 50+ rules across 7 languages (TypeScript, JavaScript, Python, Go, Rust, Ruby, PHP). Sub-second, deterministic, no LLM at runtime. MIT-licensed. GitHub - kouhxp/cheap-im: CPU-only voice agent approximating Thinking Machines' Interaction Models demo GitHub - unprovable/OrchidMantis: Orchid Mantis — standalone framework for Zero-Knowledge Proofs of eXploit (ZKPoX). GitHub - MarcellM01/TinySearch: Shrink the web for your local LLMs! GitHub - TangibleResearch/Halgorithem: A Algo designed to detect AI Hallucitions GitHub - DO-SAY-GO/freelang: I love freelang GitHub - CarpseDeam/Aura-IDE: An AI coding harness that shaped itself - Planner/Worker agents, repo awareness, surgical edits, validation, recovery, and safe diff approvals. GitHub - chojs23/concord: A feature-rich TUI client for Discord GitHub - tommyjepsen/awesome-ux-skills: UX & AI Product designs skills you can use today in Claude Code GitHub - aerf-spec/aerf: Agent Evidence Receipt Format (AERF) — an open specification for tamper-evident, independently verifiable records of AI agent actions. GitHub - kklimuk/docx-cli: CLI for AI agents (Claude, Codex) to read, edit, and comment on .docx files with full format fidelity. GitHub - Jwrede/tokentoll: Catch LLM cost changes in code review. Infracost for LLM spend. GitHub - samchon/ttsc: A `typescript-go` toolchain for compiler-powered plugins and type-safe execution + 500x faster lint integrated into compiler GitHub - Higangssh/homebutler: 🏠 Manage your homelab from chat. Single binary, zero dependencies. GitHub - olalie/tapmap: See where your computer connects and what stands out on a live world map. GitHub - Diplomat-ai/diplomat-agent: What can your AI agent do to the real world? Scan your code. See which tool calls have zero checks GitHub - Bajusz15/beacon: Open-source agent for secure remote access, monitoring, and deploys across home-lab and self-hosted machines like Raspberry Pi, N100, or any Linux server. Open web based TTY or tunnel Home Assistant and other local services securely without opening ports. BigTech AI News - Chrome 应用商店 GitHub - vinhnx/VTCode: VT Code is an open-source coding agent with LLM-native code understanding and robust shell safety. Supports multiple LLM providers with automatic failover and efficient context management. GitHub - michaelaz774/decision-engine: A decision operating system for startup founders, powered by Claude Code. Synthesizes wisdom from 25+ legendary founders and investors into interactive AI-driven decision frameworks. GitHub - Chrilleweb/dotenv-diff: Validate environment variable usage in your codebase GitHub - Lumen-Labs/brainapi2: BrainAPI is a knowledge graph–powered AI memory layer that transforms unstructured data into structured knowledge, enabling intelligent search, recommendations, and contextual memory for AI agents and applications. GitHub - familiar-software/familiar: Let AI watch you work. Familiar lets your AI update its memory, skills, and knowledge by watching your screen. GitHub - skorotkiewicz/rudo: A small, elegant dock for Wayland GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. make sidebar/address bar rounded corner toggleable
GitHub - juliensimon/canopy: Ship faster with parallel Claude Code sessions — one native macOS window, git worktrees, sandboxes, auto-resume, merge & finish, token dashboard.
julsimon · 2026-06-15 · via Show HN

Canopy

Parallel Claude Code sessions with git worktrees — a native macOS app.

One window. Parallel branches. Parallel Claudes. Zero context switching.

Latest release Downloads Build codecov Stars Issues Last commit

macOS 14+ Swift 6 License: AGPL-3.0

⬇ Download Canopy for macOS

Universal binary · Apple Silicon + Intel · Notarized · macOS 14+


demo.mp4


Why I built this

I've been using Canopy every day for months on my own projects. I'm sharing it now because it has earned its place on my dock, and I think it might earn a place on yours too.

Here's the honest pitch: Claude Code is a superpower. Canopy feels like wearing all five Infinity Stones.

When you use Claude Code seriously — not just for experiments, but for real production work — you hit a wall the tool wasn't designed to push through. Claude is brilliant at focusing on one thing in one directory. But real engineering work doesn't come one thing at a time. A bug report lands while you're refactoring. A teammate asks you to review a change while you're writing tests. The roadmap demands you keep shipping while you investigate a flaky test. You need to work on three things at once, but Claude — and git — want you to work on one.

You can hack around it: stash, checkout, maybe a second clone, maybe git worktree add and a hand-written shell script to copy your .env, maybe remember which of your six Terminal.app tabs was running which session. You end up with a tab graveyard, stale worktrees littering your disk, Claude sessions you can't find, and a quiet tax on every task you do.

Canopy removes that tax. Completely.

What you actually get back

Every Canopy feature exists because I was tired of doing something manually. Each one saves a few seconds. Do the math over a day — over a week, over a month — and the compound is real.

You used to do this With Canopy
Stash your work, checkout another branch, lose Claude's conversation context Open a new worktree session — your old session keeps running in another tab
Hunt through ~/.claude/projects/<hash>/ for a session ID, then claude --resume abc123… Click the tab. Canopy resumes the right session automatically.
Juggle six Terminal.app windows, cmd-tabbing to find the right one One window, one tab bar, Cmd+1Cmd+9 to jump anywhere
Copy-paste the working directory into Cursor/VS Code with cmd-c / cmd-shift-o / cmd-v Right-click → Open in IDE
Switch windows to run git log while Claude is working Cmd+Shift+D — shell pane drops in below Claude, no interruption
Re-run npm install, copy .env, symlink node_modules every time you make a worktree Configure once per project. Canopy does it on every new worktree.
Wonder which of your branches are merged and safe to delete Project view lists every worktree with status and a one-click Merge & Finish
git checkout main && git pull && git merge feat/… && git worktree remove … && git branch -d … Right-click → Merge & Finish — two panels, one button
Squint at ls ~/.claude/projects/ trying to guess how many tokens you've burned this week Open Activity — token counts, session history, 12-week heatmap
Type out the same "write tests", "review security", "update docs" prompt for the tenth time Save it once in the Prompt Library — one right-click to fire it at any session
Scroll a flickering terminal trying to re-read what Claude said ten minutes ago Right-click → Show Transcript — the conversation as clean markdown, live-updating
Worry about what an autonomous agent might touch outside the repo Pick a sandbox — per session, per project, or globally — and Claude runs in a VM with just your worktree mounted

None of these are big problems on their own. All of them are papercuts. Canopy is a tool for people who notice papercuts.


Install

Homebrew (recommended)

brew install --cask juliensimon/canopy/canopy

Direct download

Grab the latest signed and notarized .dmg from Releases. Open, drag to Applications, launch.

Requirements: macOS 14 Sonoma or later. Apple Silicon or Intel. Claude Code installed (claude available in your $PATH).


Quick start

  1. Add a project (Cmd+Shift+P) — point at any git repository. Configure files to copy (.env), symlink paths (node_modules), and setup commands (npm install).
  2. Create a worktree session (Cmd+Shift+T) — pick a base branch, name your feature branch.
  3. Canopy creates the worktree, copies config, runs your setup, and launches Claude Code. Start prompting.
  4. Need a parallel task? Cmd+Shift+T again. Each session is completely isolated.
  5. When you're done with a session, right-click → Merge & Finish. Canopy merges your branch and cleans up the worktree.

That's the whole loop. Repeat forever.


Features in depth

🪟 Parallel sessions, one window

Main window with multiple tabs

Each tab is a separate worktree running its own Claude Code instance. Switch between them with Cmd+1Cmd+9. Drag tabs to reorder. Sort by name, project, creation date, or directory with Cmd+Shift+S. Activity dots show which sessions have output streaming, so you know at a glance which Claude is still thinking.

When you close and reopen Canopy, every session comes back — with its Claude conversation resumed automatically. No session IDs to remember, no --resume flags to type. Canopy finds the right session by scanning ~/.claude/projects/ and passes it to claude for you.


📊 Activity dashboard — know where your tokens go

Activity dashboard

Token usage is the one thing Claude Code doesn't surface well. Canopy fixes that.

The Activity view parses your ~/.claude/projects/ JSONL files and gives you a full picture of how you've been using Claude:

  • All-time token totals — input and output, across every session you've ever run
  • Last 12 weeks — same breakdown, so you can see recent trends
  • Session count — how many conversations you've had in the window
  • Busiest day — when were you deep in Claude?
  • Model breakdown — percentage split across Opus, Sonnet, and Haiku
  • Hour-by-hour heatmap — 12 weeks of your actual working hours, visualized

This is the view I use to answer "am I on track for my API budget this month" and "when am I most productive." No third-party tools, no scraping, no estimation — it's reading the same JSONL files Claude Code writes.


⌨️ Command palette — fuzzy search everything

Cmd+K opens a fuzzy-match palette over every session, project, branch, and action Canopy knows about. Type three letters of a branch name, hit return, you're there. Type the name of a project, hit return, the project view opens. Type "merge", hit return, the merge flow fires on the current session.

If you have more than four or five sessions open, this is the fastest way to navigate. Faster than clicking. Faster than Mission Control. Fast enough to feel instant.


🔎 Find in terminal — stop scrolling

Terminal search

Cmd+F inside any session opens an incremental search over the terminal output. Matches highlight as you type. Return jumps to the next match. Shift-return jumps to the previous one. Escape closes the search.

This is a small feature that turns out to matter a lot: when Claude produces a 400-line plan and you need to jump to the part about "database migration," you used to scroll. Now you don't.


📜 Show Transcript — read the conversation, not the terminal

Right-click any session → Show Transcript… for a clean, scrollable, read-only view of the whole conversation. When Claude Code is running, Canopy reads its structured JSONL session log and renders user/assistant turns with markdown formatting — tool calls compacted to one-line summaries instead of walls of raw output. It live-updates as Claude streams, with an auto-tail toggle so you can read history without being yanked back down. The Copy button (Cmd+Shift+C) puts the formatted markdown on your clipboard — handy for PR descriptions and notes.


⬓ Split terminal — Claude up top, shell below

Split terminal

Cmd+Shift+D toggles a secondary shell pane below Claude's terminal. Need to run git status while Claude is mid-thought? Peek at the test output from another tool? Tail a log? You don't need to interrupt Claude or open a new window. The split pane is a full interactive shell, scoped to the same worktree, and you can hide it the same way you showed it.

This is the feature I was most skeptical I'd use, and now I can't imagine working without it.


🛡 Sandboxes — run Claude in isolation

Pick a sandbox backend in Settings (globally, per project, or per session in the New Worktree Session sheet) to launch Claude inside a VM. Your working directory is bind-mounted into the sandbox, so file edits work normally, but everything that isn't explicitly mounted — SSH keys, documents, the Keychain, other repos, the rest of your home directory — is out of reach. A shield icon marks sandboxed sessions in the sidebar, and the split terminal still opens a host shell for inspecting the real filesystem. Canopy validates the required tools before enabling a backend. The user guide spells out exactly what is and isn't protected (the mounted project and outbound network are deliberate trade-offs).

Docker Sandbox (sbx) — a Docker Sandbox microVM via sbx run. Session resume is disabled (session files live inside the ephemeral microVM). Requirements: Docker Desktop and sbx (brew install docker/tap/sbx).

Apple container — a lightweight VM via Apple's open-source container runtime, no Docker Desktop needed. Canopy mounts the worktree, the project's main repo, and your ~/.claude state at their host paths — so git works inside the sandbox and session resume works, unlike sbx. The default canopy-claude image is built in one click (Settings → Build Image); a one-time /login inside the first sandboxed session sets up credentials. Requirements: macOS 26+ on Apple silicon, brew install container, container system start once per boot. Full setup steps in the user guide.


✅ Merge & Finish — one click, one worktree retired

Merge and Finish flow

The last step of every feature used to be a four-command dance:

git checkout main
git pull
git merge feat/whatever
git worktree remove ../canopy-worktrees/myproject/feat-whatever
git branch -d feat/whatever

…except you never actually did all of it, and now you have 11 stale worktrees and 40 merged branches on your laptop. Canopy replaces the whole thing with a two-phase confirmation sheet. Phase 1: pick the target branch, confirm the commit count, see any conflicts before they happen. Phase 2: pick what to clean up — worktree directory, feature branch, both, or neither. One click. Done. No debt.


🌳 Project view — see every worktree at once

Project detail view

Click any project in the sidebar to see every worktree, its branch, its status, and a one-click button to open, merge, or delete it. "Open All" resumes every inactive worktree at once with their prior Claude sessions — the fastest way to get back into a multi-branch project after a weekend away.

The project view also lists every open pull request for the repository, pulled via gh pr list — so you can see at a glance which of your worktrees already have a PR in flight and which are still local.


🔀 Git awareness — always-visible repo state

Canopy polls git and gh every 10 seconds so you never have to drop into a shell to check the state of the current worktree. You see:

  • Status bar at the bottom of the window, for the active session: modified files with + / line counts, commits ahead of the upstream, and open pull request count (with draft split). Hover any pill for a full tooltip — file list, push status, PR titles.
  • Sidebar session rows show a compact +N / −N diffstat and an up-arrow count for commits-ahead, so you can scan all your worktrees at once.
  • Project detail view lists every open PR with title, number, author, and draft status.

Requires gh to be installed for the PR data (brew install gh). Path is auto-detected; override in Settings if needed.


📋 Prompt Library — reusable prompts, one right-click away

Build a library of prompts you use repeatedly — "write tests for this", "check for security issues", "update the README" — and fire them at any session without retyping.

Sending a prompt: Right-click any session → Send Prompt. Starred prompts appear inline in the submenu for instant access. Click Browse All… to search the full library.

Managing the library: Open Settings → Prompt Library. Add, edit, reorder (drag-and-drop), star, and delete prompts. All changes save immediately.

Template variables are substituted at send time:

Variable Resolves to
{{branch}} Current git branch of the session
{{project}} Project name
{{dir}} Working directory name (last path component)

A prompt like "Review {{branch}} for correctness and add tests" becomes "Review feat/auth for correctness and add tests" when sent to that session.


Keyboard shortcuts

Shortcut Action
Cmd+T New plain session (directory picker)
Cmd+Shift+T New worktree session
Cmd+Shift+P Add project
Cmd+K Command palette
Cmd+F Find in terminal
Cmd+Shift+D Toggle split terminal
Cmd+Shift+A Activity dashboard
Cmd+Shift+S Cycle tab sort mode
Cmd+1Cmd+9 Jump to tab N
Cmd+, Settings
Cmd+? Help

How it works

Canopy builds on two ideas that play well together:

  • Git worktrees let you check out multiple branches of the same repo simultaneously, each in its own directory, sharing one .git store. Creating one is cheap and fast.
  • Claude Code sessions are directory-scoped and resumable. Canopy finds the last session ID for each worktree and passes it via --resume, so conversations survive restarts.

Everything else — the tabs, the project view, the Activity dashboard, the palette, the split pane — is a native SwiftUI app wrapped around SwiftTerm for terminal emulation. No Electron, no webviews, no bundled Node. It launches fast, idles quiet, and behaves like a Mac app.

For a deeper walkthrough, read the User Guide.


Per-project configuration

Every project can be configured independently from the Add Project sheet:

Setting Example Why
Files to copy .env, .env.local Untracked config files Claude needs at runtime
Symlink paths node_modules, .venv, vendor Heavy directories; symlinks save disk and install time
Setup commands npm install, bundle install, make setup Run once in each fresh worktree
Worktree base directory ~/worktrees/myproject Where new worktrees live (default: ../canopy-worktrees/<project>)
Auto-start Claude on/off Per-project override of the global default
Claude flags --permission-mode auto Per-project override of the global flags
Sandbox backend Off / Docker Sandbox / Apple container Run Claude inside a Docker Sandbox microVM or an Apple container VM
Sandbox flags --memory 8g Additional flags passed to sbx run
Container image / flags canopy-claude / --memory 8g Image and extra flags for the Apple container backend

All configuration lives in ~/.config/canopy/:

  • settings.json — global preferences
  • projects.json — project list and per-project config
  • projects.backup.json — automatic backup created on every launch
  • sessions.json — persisted sessions, restored on app restart
  • sessions.backup.json — automatic backup created on every launch
  • prompts.json — saved prompt library

Contributing

Found a bug, have a feature request, or want to send a patch? Open an issue or a PR.

Because Canopy is dual-licensed (see below), contributors are asked to sign the Contributor License Agreement by submitting a pull request. This is a lightweight CLA that grants the project maintainer the right to relicense contributions. It's what makes dual licensing possible while keeping the open source version free under AGPL.


Author

Built by Julien Simon — julien@julien.org.

I've been writing software for a long time. I built Canopy because I use Claude Code every day and the rough edges were getting in the way of the work. It started as a weekend experiment and turned into the tool I now reach for first every morning.

If Canopy saves you time, the best thank-you is to tell someone else who might also find it useful — post it on social, drop it in a Slack, submit a PR. A star on the repo never hurts either.


License

Copyright © 2026 Julien Simon.

Canopy is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). You can use it, modify it, and redistribute it under the terms of that license.

Commercial licensing: If you need to use Canopy under terms other than AGPL-3.0 — for example, embedding it in a proprietary product or redistributing without source disclosure — commercial licenses are available. Contact julien@julien.org.