# Contributing to Rakazo Thanks for helping improve Rakazo. Keep changes focused and testable. ## Run locally See [README.md](README.md) for full details. Quick start from the repo root: ```bash cp .env.example .env # Set BETTER_AUTH_SECRET and ENCRYPTION_KEY to long random strings. docker compose --env-file .env -f infra/compose/docker-compose.yml up postgres -d pnpm install pnpm db:generate pnpm db:migrate pnpm sandbox:build pnpm dev ``` ## Checks before you open a PR | Command | When to run | | --- | --- | | `pnpm test` | Default. Units, properties, and in-process contracts. Scripted runtime, fake sandbox, in-memory wakeup — no live connector or model-provider calls. | | `pnpm test:integration` | Postgres via Testcontainers: product journeys, authorization, executor lifecycle, Graphile / LISTEN/NOTIFY. Needs Docker. | | `pnpm test:e2e` | Playwright against the emulated API. Needs Docker. | | `pnpm test:topology` | Local product-path smoke: Docker computer + Graphile worker recovery. Needs Docker. Not PR CI. | | `pnpm test:canary` | Live OpenRouter / E2B canaries. Needs keys. Not PR CI. | | `pnpm test:computer` | Real vision model + E2B desktop. Needs keys; see README. Not PR CI. | | `pnpm check` | TypeScript (`tsc`) across the monorepo. | | `pnpm lint` | Biome lint and format check. | CI runs `pnpm lint`, `pnpm check`, production builds (including Electron preload smoke), `pnpm test`, `pnpm test:integration`, and `pnpm test:e2e` on every PR. ## Secrets and configuration - **Never** commit `.env` files or secrets. - **Never** paste API keys, tokens, or passwords in issues or PRs. - Use placeholders in examples (`your-openrouter-key`, etc.). The product path is **Pi + Docker + Graphile**. Emulator settings (`AGENT_RUNTIME=scripted`, `SANDBOX_PROVIDER=fake`, `WAKEUP_DRIVER=memory`) are for tests only. **Integrations** can use [Composio](https://composio.dev/) or Pipedream Connect as optional managed app catalogs. Users can also install HTTPS MCP servers (including Treg) and bounded OpenAPI tool sources. Connector tests must stay deterministic and offline. Never put connector credentials in capability config, fixtures, logs, or snapshots; use the encrypted secret store and fake placeholders. ## Pull requests - Keep PRs small and easy to review. - Target the `main` branch. - Describe what changed and **how you tested** (e.g. `pnpm test`, manual steps). - Link related issues when applicable. ## Contact | Address | Use for | | --- | --- | | [security@rakazo.com](mailto:security@rakazo.com) | Vulnerabilities only — see [SECURITY.md](SECURITY.md) | | [support@rakazo.com](mailto:support@rakazo.com) | User and support questions | | [elie@rakazo.com](mailto:elie@rakazo.com) | Maintainer |