This guide is the default contributor path for Burns. Use it when you need to get the repo running, decide where to make a change, and verify work before opening a PR.
- Bun
1.2.19 - Git CLI
- Optional for AI workflow generation and editing: at least one supported local agent CLI on
PATHclaudecodexgeminipi
Use this for most product work.
bun install
bun run dev:daemonIn a second terminal:
bun run dev:webThen open http://localhost:5173.
The web app talks to http://localhost:7332 by default.
Use this when the change involves the desktop shell, tray behavior, startup rules, or runtime config injection.
bun run desktop:devImportant desktop dev behavior:
bun run desktop:devenablesBURNS_DESKTOP_ALLOW_ATTACH_EXISTING=1, so desktop mode can attach to an already running Burns daemon during development.BURNS_DESKTOP_DEV_SOURCE=views|vitechooses between bundled views and a live Vite server.BURNS_DESKTOP_DEV_VITE_URL=http://localhost:5173overrides the Vite URL used in desktop dev mode.BURNS_DESKTOP_FORCE_API_URL=http://localhost:7332overrides the daemon API URL injected into the web app.- Packaged desktop startup blocks when another Burns daemon is already bound to the configured desktop URL. Dev mode relaxes that by allowing attach-to-existing behavior.
Practical recommendation:
- Use daemon + web for most backend and UI iteration.
- Use desktop mode when you need to verify shell, tray, or runtime-config behavior.
Use this when you want to run Burns without the desktop shell.
bun run cli:startapps/daemon: daemon routes, services, workspace handling, Smithers lifecycle, local persistenceapps/web: React routes, feature UI, app shell, settings, runs, approvals, inboxpackages/shared: shared Zod schemas and domain contractspackages/client: typed frontend client for daemon APIsapps/desktop: desktop shell, tray behavior, runtime bootstrapping, injected configapps/cli: CLI startup flow and packaged web serving
If you are new to the repo, start with Getting Started for Smithers Developers and Repository Guide.
Run the baseline checks from the repo root unless your change clearly does not affect that area:
bun run typecheck
cd apps/web && bun run lint
cd apps/daemon && bun run test
cd apps/cli && bun run test
cd apps/desktop && bun run testAdditional notes:
- Prefer adding or updating tests when behavior changes.
- Keep docs in sync with user-facing or contributor-facing behavior changes.
- Release workflows exist under
.github/workflows, but there is not yet a general CI guide beyond the release docs.
- Keep changes scoped and coherent.
- Prefer tests for behavior changes.
- Update
README.md,docs/*, andCHANGELOG.mdwhen the change affects onboarding, workflows, release behavior, or contributor expectations. - Preserve the distinction between onboarding docs and lower-level reference docs:
README.md: orientation and quick startdocs/getting-started-smithers-developers.md: tutorial pathCONTRIBUTING.md: contributor workflow and checksdocs/repository-guide.md: repo map and commands- app-level READMEs: package-specific runtime details