MCPcopy
hub / github.com/generalaction/emdash

github.com/generalaction/emdash @v1.1.36 sqlite

repository ↗ · DeepWiki ↗ · release v1.1.36 ↗
8,718 symbols 30,295 edges 2,201 files 531 documented · 6%
README

Emdash

Download · Docs · Releases · Discord · Contributing

Apache 2.0 License Downloads GitHub Stars Last Commit Commit Activity

Discord Y Combinator W26 Follow @emdashsh on X

Emdash is a desktop app for running AI coding agents in parallel. Each task runs in its own Git worktree, so you can explore multiple fixes or features at once, review the diffs, and merge what works.

It works with local projects and remote machines over SSH. Bring the CLI agents you already use: Claude Code, Codex, OpenCode, Gemini, Amp, and more.

Emdash product screenshot

What You Can Do

  • Run multiple coding agents at once without juggling terminals.
  • Keep every agent isolated in its own Git worktree and branch.
  • Send issues and tickets from Linear, GitHub, Jira, GitLab, Asana, Featurebase, Monday.com, Forgejo, or Plain into an agent.
  • Review diffs, create pull requests, inspect CI checks, and merge from one place.
  • Work locally or on your own remote machines over SSH/SFTP.

Installation

Platform Install
macOS brew install --cask emdash · Apple Silicon · Intel
Windows Installer · Portable
Linux AppImage · Debian package

See the latest release for all desktop builds.

Agents

Emdash detects installed provider CLIs automatically. It supports agents like Claude Code, Codex, Cursor, OpenCode, Gemini, Amp, Devin, Qwen Code, Droid, and GitHub Copilot.

See Providers for the full list, setup commands, and provider-specific behavior.

Remote Projects

Connect to remote machines with SSH/SFTP and run the same parallel workflow on remote codebases. Emdash supports SSH agent, key, and password authentication, with credentials stored in your OS keychain.

See Remote Projects and Bring Your Own Infrastructure for setup details.

Privacy

Emdash is local-first. App state is stored in a local SQLite database, and Emdash does not send your code or chats to Emdash servers.

Agent CLIs may send code, prompts, and context to their own providers. Their data handling depends on the provider you choose.

Telemetry is optional and can be disabled in Settings or by launching with:

TELEMETRY_ENABLED=false

See Telemetry for details.

Contributing

Contributions are welcome. Read the Contributing Guide, open an issue, or join the Discord.

License

Licensed under the Apache-2.0 license.

Extension points exported contracts — how you extend this code

AcpTerminalProcess (Interface)
(no doc) [8 implementers]
packages/core/src/acp/transport.ts
IInitializable (Interface)
(no doc) [26 implementers]
packages/shared/src/lifecycle.ts
Workspace (Interface)
(no doc) [82 implementers]
apps/emdash-desktop/src/main/core/workspaces/workspace.ts
ContextMentionProvider (Interface)
(no doc) [5 implementers]
packages/ui/src/react/components/prompt-editor/types.ts
MentionProvider (Interface)
(no doc) [3 implementers]
packages/chat-ui/src/core/markdown/mention-provider.ts
AcpProcessHandle (Interface)
(no doc) [9 implementers]
packages/core/src/acp/transport.ts
IDisposable (Interface)
(no doc) [103 implementers]
packages/shared/src/lifecycle.ts
RuntimeManager (Interface)
(no doc) [13 implementers]
apps/emdash-desktop/src/main/core/runtime/types.ts

Core symbols most depended-on inside this repo

map
called by 874
packages/shared/src/secret.ts
push
called by 834
packages/core/src/git/types.ts
ok
called by 601
packages/shared/src/result/index.ts
err
called by 564
packages/shared/src/result/index.ts
get
called by 561
apps/emdash-desktop/src/main/core/acp/transport/types.ts
set
called by 538
apps/emdash-desktop/src/renderer/lib/stores/resource.ts
style
called by 417
packages/chat-ui/src/core/layout/box.tsx
delete
called by 378
packages/core/src/agents/runtime/fs.ts

Shape

Function 4,705
Method 2,797
Class 677
Interface 539

Languages

TypeScript100%

Modules by API surface

apps/emdash-desktop/src/main/core/runtime/legacy/ssh-git.ts67 symbols
apps/emdash-desktop/src/renderer/features/tabs/pane-store.ts53 symbols
apps/emdash-desktop/src/main/core/skills/SkillsService.ts53 symbols
packages/shared/src/result/index.ts50 symbols
apps/emdash-desktop/src/main/core/git/legacy/git-service.ts50 symbols
packages/core/src/git/types.ts46 symbols
packages/core/src/git/git-worktree.ts45 symbols
apps/emdash-desktop/src/main/core/ssh/lifecycle/ssh-connection-manager.ts40 symbols
apps/emdash-desktop/src/renderer/lib/monaco/monaco-model-registry.ts36 symbols
apps/emdash-desktop/src/main/core/automations/repo.ts36 symbols
packages/core/src/acp/acp-session-runtime.ts35 symbols
apps/emdash-desktop/src/main/core/pull-requests/pr-sync-engine.ts35 symbols

Dependencies from manifests, versioned

@agentclientprotocol/claude-agent-acp0.45.1 · 1×
@agentclientprotocol/sdk0.25.1 · 1×
@base-ui/react1.3.0 · 1×
@chenglou/pretext0.0.8 · 1×
@dnd-kit/core6.3.1 · 1×
@dnd-kit/sortable10.0.0 · 1×
@dnd-kit/utilities3.2.2 · 1×
@electron/notarize2.5.0 · 1×
@electron/rebuild4.0.1 · 1×
@emdash/chat-uiworkspace:* · 1×
@emdash/coreworkspace:* · 1×
@emdash/pluginsworkspace:* · 1×

Datastores touched

(mongodb)Database · 1 repos
myDatabaseDatabase · 1 repos
appDatabase · 1 repos
dbDatabase · 1 repos

For agents

$ claude mcp add emdash \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact