CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# Contributing to autonomOS
Thanks for your interest! autonomOS is a personal-tool-first project, but issues and PRs are welcome.
## Getting started
```bash
git clone https://github.com/aterrylu/autonomOS && cd autonomOS
cp -n .env.example .env # optional config
bun install
make dev # API on :3101 + Vite HMR on :5173
```
You'll need **Node 20+** and the `claude` binary on your PATH (autonomOS spawns agent CLIs; Codex and Gemini are optional).
## Development workflow
| Command | What it does |
|---------|--------------|
| `make dev` | API server (watch) + Vite HMR — the day-to-day dev loop |
| `make dev-lan` | Same, but the dashboard is reachable from other devices on your network (see below) |
| `make check` | Lint (Biome) + typecheck (tsc) + server, CLI & dashboard tests — **run before every push** |
| `make fmt` | Auto-fix lint + formatting |
| `make hero` | Regenerate the README hero screenshot (see below) |
`make dev` listens on **this machine only** (127.0.0.1). To open the dev dashboard from a phone or another computer, run `make dev-lan` instead. Anyone on that network who can reach the Vite port gets the dev dashboard's files and its proxy to the API, so do it only on a network you trust. The API server itself always stays on 127.0.0.1. To reach it by a hostname rather than an IP, add the name with Vite's `__VITE_ADDITIONAL_SERVER_ALLOWED_HOSTS` environment variable.
Run `make check` before you push — it mirrors CI exactly, so if it passes locally the PR's `check` job will too.
## Commit messages
We use [Conventional Commits](https://www.conventionalcommits.org/) (enforced by commitlint):
```
feat: new features
fix: bug fixes
perf: performance improvements
refactor: structural changes
docs: documentation
research: research findings
```
Keep the subject imperative and concise; `commitlint` will flag anything malformed on commit.
## Pull requests
1. Branch off `main`, make your change, and open a PR against `main`.
2. **CI must pass** (lint, typecheck, tests across macOS + Linux) — never bypass with `--admin`.
3. **Resolve all review conversations** before merge (it's enforced on `main`).
4. PRs are **squash-merged** — your branch's commit history collapses to one commit, so don't worry about tidy intermediate commits.
## A few project conventions
- **Architectural decisions go in [`docs/decisions/`](docs/decisions/README.md)**, one append-only ADR file per decision with context + rationale. If your change makes a non-obvious design choice, run `make adr NEW="Short title"` and fill in the template.
- **Changing the dashboard UI? Re-run `make hero`.** The README hero (`docs/assets/hero.png`) is *generated*, not hand-captured — it must reflect the real product. Any visible change (layout, sidebar, org chart, status bar, themes, provider icons, usage bars) means re-shooting it and committing the updated PNG. See [`packages/dashboard/scripts/capture-hero.ts`](packages/dashboard/scripts/capture-hero.ts).
- **MCP tool schemas live in `packages/server/src/mcp/tools.ts`** — the single source of truth shared by both MCP transports. Don't define them elsewhere.
- **Terminology:** the UI says "agents"; the code says "sessions." Both mean the same managed PTY process.
See [`CLAUDE.md`](CLAUDE.md) for the full agent/developer guide and [`docs/`](docs/) for features, decisions, and vision.
## License
By contributing, you agree your contributions are licensed under the project's [MIT License](LICENSE).