Contributing
We welcome contributions of any size — bug reports, parsers, UI improvements, docs.
Getting set up
Section titled “Getting set up”- Fork the repo.
- Clone, install, and run the dev server:
Terminal window git clone https://github.com/<your-user>/headlessos.gitcd headlessosnpm installnpm run dev - Spin up the local SSH server for testing:
Terminal window ./dev/vm.sh start
Project layout
Section titled “Project layout”This is an npm workspace monorepo:
server/— Fastify backend (TypeScript strict)client/— React 19 + Vite + TailwindCSS 4 frontendshared/— shared types and Zod schemaselectron/— desktop wrapperdocs/— internal architecture & decision docs
Document-Driven Development
Section titled “Document-Driven Development”The project follows strict DDD. Every task starts by reading docs/PROGRESS.md and the relevant phase doc. See AGENTS.md for the full ruleset.
Every PR must include tests for any new code. Run them with:
npm testWe use Vitest across both server and client.
Code style
Section titled “Code style”- TypeScript strict mode — no
any. - Async/await only — no callbacks.
- Zod schemas for all data crossing boundaries.
- Fastify patterns (not Express).
- Functional React components with hooks.
Good first issues
Section titled “Good first issues”Check the GitHub issues labeled good first issue.
A great place to start: write a deterministic parser for a Linux command we don’t have one for yet.