A notification-first IDE for multi-agent development. Built for solo AI-heavy developers running multiple Claude Code (and other agent) sessions in parallel.
Mashed is a Wails v2 desktop application: a single Go binary that embeds a Svelte + TypeScript frontend and ships as a signed macOS app.
_bmad-output/) wired through typed nodes in internal/bmad/.app_git.go, app_review.go).mashed-pty-helper (required for macOS Sequoia PTY entitlements).| Layer | Stack |
|---|---|
| Desktop | Wails v2 (github.com/wailsapp/wails/v2) |
| Backend | Go 1.25, testify, fsnotify, gorilla/websocket, creack/pty, yaml.v3 |
| Frontend | Svelte + Vite + TypeScript, Monaco editor |
| Design | Geist / Geist Mono / JetBrains Mono, dark-only, neon-green accent |
| Platform | macOS (Apple-signed .app with hardened runtime + entitlements) |
Full inventory: see go.mod, frontend/package.json, and DESIGN.md.
.
├── cmd/ # Go entry points (pty-helper, etc.)
├── internal/ # Go packages — bmad, git, terminal, scanner, etc.
├── frontend/ # Svelte + Vite app
│ └── src/
│ ├── components/ # BMAD canvas, GitPanel, MonacoEditor, ProcessSidebar
│ ├── views/ # NotificationFeed, WorkflowBuilder, AgentDetail, Settings
│ └── lib/ # stores, utilities
├── build/ # Wails build output + darwin entitlements
├── fonts/ # bundled Geist / JetBrains Mono
├── scripts/ # coverage, tmux viewer helpers
├── tests/ac/ # Playwright acceptance tests
├── main.go # Wails bootstrap + native menu
├── app*.go # Wails bindings (git, bmad, review, terminal, …)
├── wails.json # Wails config
├── justfile # dev / build / test recipes
└── .wolf/ # OpenWolf context (anatomy, cerebrum, memory)
Canonical per-file navigation lives in .wolf/anatomy.md (auto-maintained by OpenWolf).
justfile as "Apple Development: linus McManamey (5X8A9U965U)"; edit to your own identity before just build.just dev # builds pty-helper, starts `wails dev` with HMR
The Vite dev server binds automatically; Wails exposes Go methods on http://localhost:34115 for browser devtools.
just build-helper # build + sign mashed-pty-helper only
just build # full build: helper + frontend + wails bundle + codesign
just run # build and launch the .app
Output: build/bin/mashed.app.
just test # Go tests (internal/...)
just test-all # Go + frontend vitest
just test-cover # per-package Go coverage gate (scripts/check-coverage.sh)
just lint # go vet ./...
just pre-check # run lefthook pre-commit hooks
Playwright AC specs live in tests/ac/ and use playwright.config.ts.
| Shortcut | Action |
|---|---|
⌘ N |
New Agent |
⌘ ⇧ N |
New Repository… |
⌘ O |
Open Workspace… |
⌘ ⇧ S |
Take Screenshot |
⌘ 1 / ⌘ 2 |
Feed / Workflows |
⌘ , |
Settings |
⌘ M |
Minimize |
⌃ ⌘ F |
Toggle Fullscreen |
⌘ Q |
Quit |
internal/bmad/artifacts.go.{repoPath}/_bmad-output/{category}/{artifact}.ResolveArtifactPath(name, repoPath) returns "" for unmapped artifacts ("code", "tests", "any-doc") — callers handle.bmadOutputDir = "_bmad-output" in internal/bmad/sprint.go.Dark-only, industrial/utilitarian. Full spec in DESIGN.md:
#07080a → #0d0f12 → #12151a → #181c23#00e57a (neon green), alert #f0a500, error #e84545, info #3d9eff, agent #9d6fff.wolf/OPENWOLF.md each session; consult .wolf/anatomy.md before opening files and .wolf/cerebrum.md before writing code..wolf/buglog.json._bmad-output/.See LICENSE (when present). Repo URL in-app: set by repoURL in main.go.