Contributing to FERAL
FERAL is building toward an agent-native operating system. That is a large mission and we need help from many kinds of engineers — backend, frontend, ML, hardware, Nix/packaging, and documentation.Development Setup
Code Style
Python
- Type hints on all function signatures.
- Ruff for linting, Black-compatible formatting.
- Keep functions focused and short. Prefer composition over inheritance.
- Avoid broad
except:blocks — catch specific exceptions.
TypeScript / React
- Strict mode enabled.
- Prettier for formatting.
- Functional components with hooks.
General
- No commented-out code in PRs.
- Comments explain why, not what.
- New features should include tests.
Testing
feral-core/tests/. Use pytest-asyncio for async tests — the asyncio_mode = "auto" config handles the event loop.
Pull Request Process
-
Fork the repository and create a feature branch:
- Write tests for new functionality.
-
Run the test suite and ensure it passes:
-
Open a PR against
mainwith a clear title and description:- What changed and why.
- How to test the change.
- Screenshots for UI changes.
- One approval from a maintainer is required to merge.
Contributor Lanes
Pick the area that matches your skills:| Lane | What You’d Work On | Entry Points |
|---|---|---|
| Runtime / Orchestrator | Agent loop, LLM routing, TaskFlows, sessions, security | feral-core/agents/ |
| Memory / Knowledge | 4-tier memory, wiki compilation, ingest pipelines, federated sync | feral-core/memory/ |
| GenUI / Provider Surfaces | SDUI engine, provider contracts, surface caching, client renderer | feral-core/genui/, feral-client/src/components/SduiRenderer.jsx |
| Hardware / Daemons | HUP protocol, daemon SDKs, device profiles, edge bridges | feral-core/hardware/, feral-nodes/ |
| Voice / Perception | Realtime voice, Gemini Live, wake word, vision pipeline | feral-core/voice/, feral-core/perception/ |
| Nix / Packaging | Flake outputs, NixOS modules, reproducible builds | flake.nix |
| Frontend / Shell | Web UI, dashboard, Tauri desktop, mobile bridges | feral-client/, desktop/ |
| Documentation | Guides, API reference, architecture docs | docs/ |
Architecture Docs
Before diving in, read these to understand the system:- Architecture Overview
docs/RUNTIME_CONTRACT.md— env vars, state paths, startup/shutdown contractdocs/GENUI_PROVIDER_SPEC.md— building GenUI provider surfacesdocs/HARDWARE_ECOSYSTEM.md— building hardware daemonsdocs/ROADMAP.md— strategic execution orderdocs/SCORECARD.md— honest capability status
Reporting Issues
Open an issue at github.com/FERAL-AI/FERAL-AI/issues with:- Steps to reproduce.
- Expected vs actual behavior.
- Python version, OS, and
feral --versionoutput.
