Contributing
How the repo is organized and the conventions to follow when contributing.
Cyborg7 is a fork of Paseo. Most packages are upstream Paseo code and stay as close to upstream as possible; our additions live in clearly-owned places.
Repo layout
packages/
server/
src/server/
agent/ # Paseo (upstream) — agent lifecycle, providers. Don't modify.
cyborg/ # Cyborg7 — workspaces, channels, tasks, auth, storage, relay-standalone
db/ # Drizzle schema + PostgreSQL
ui/ # Svelte 5 UI ("blank Slack" collaboration shell)
relay/ # workspace-aware relay broker
cli/ # terminal CLI (cyborg subcommands)
cybo-runner/ # standalone Cybo CLI
desktop-cyborg/ # Electron shell (cloud-only)
docs/ # these docs (Astro Starlight) — built separately
knowledge/ # architecture docs and design decisions
Ownership rules
- Never modify Paseo's agent code (
packages/server/src/server/agent/) directly — extend or hook fromcyborg/instead, to minimize upstream merge conflicts. - Cyborg7 logic belongs in
packages/server/src/server/cyborg/andpackages/ui/. - When a task is scoped to one package, don't touch files outside it unless the task explicitly requires it.
Conventions
- Commits: Conventional Commits (
feat:,fix:,chore:,refactor:). - TypeScript: strict mode; named exports; PascalCase component files.
- Lint/format: oxlint + oxfmt (pre-commit hooks via lefthook).
- Package manager: pnpm only.
- No Spanish in code (variable names, comments). UI strings may be English or Spanish.
Build & test
pnpm install
pnpm dev # daemon + UI dev servers
pnpm build # production build
pnpm typecheck # typecheck all packages
pnpm test # vitest
Editing these docs
The docs site is packages/docs (Astro Starlight). It is excluded from the monorepo workspace and builds independently, so doc changes never affect product releases:
cd packages/docs
pnpm install
pnpm dev # http://localhost:4321