Thank you for your interest in contributing to FrontierAgent! This document provides guidelines and instructions for contributing.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/FrontierAgent.git cd FrontierAgent
- Install dependencies:
pip install uv uv sync --all-extras
- Create a feature branch:
git checkout -b feature/your-feature-name
- Python ≥ 3.12
- uv (recommended) or pip
The quick start in the README installs the lightweight terminal runtime. Development wants every optional extra present up front:
uv sync --frozen \
--extra sandbox \
--extra document-readers \
--extra eval \
--extra dev
uv run frontier-agent --no-tui -p "say hello"Linux uses the workspace-local native runtime for that command. Pass --bwrap or
--docker when development requires an OS isolation boundary; --no-sandbox
deliberately uses the real home directory and host caches as well.
To build and run the container image, see Run FrontierAgent in Docker.
# Fast checks for TUI/CLI changes
uv run pytest apodex/tests -q
# Workflow and framework tests
uv run pytest tests -q
# Everything, plus lint
uv run pytest -q
uv run ruff check .Line mode removes full-screen rendering from the equation:
uv run frontier-agent --no-tui --mode agent_team --cwd /path/to/projectInside the session, /log prints its trace location. After a failure, inspect:
tail -f /path/to/project/.apodex/runs/<session-id>/engine.log
python -m json.tool /path/to/project/.apodex/runs/<session-id>/session.jsonOn macOS, rebuild after Docker or runtime changes:
docker build -t apodex:local .
uv run frontier-agent --docker --no-tui --mode agent_team --cwd /path/to/projectFor benchmark debugging, keep both question and team concurrency small and write each run to a dedicated result directory.
We use Ruff for linting and formatting:
uv run ruff check .
uv run ruff format .Before submitting, run the pre-flight validation:
uv run python tools/preflight.py
uv run python tools/import_smoke.py- Ensure all tests pass and pre-flight checks are clean.
- Write clear, concise commit messages.
- Push to your fork and open a Pull Request against
main. - Describe what changed and why in the PR description.
- Use GitHub Issues to report bugs or request features.
- Include steps to reproduce, expected behavior, and actual behavior.
- Attach relevant logs or error messages.
- Follow existing conventions in the codebase.
- Add docstrings to public functions and classes.
- Use type annotations throughout.
- Keep lines ≤ 100 characters (configured in
pyproject.toml).
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.