Thanks for your interest in contributing!
git clone https://github.com/huijokim/agentune.git
cd agentune
docker compose up -d # Postgres + MLflow
uv sync # install all dependencies including dev# Create test database (once)
PGPASSWORD=agentune psql -h localhost -U agentune -c "CREATE DATABASE agentune_test;"
# Run all tests
uv run pytest tests/ -v
# Run a specific test file
uv run pytest tests/test_report.py -vTests that need Postgres will use AGENTUNE_TEST_DB_URL (defaults to postgresql://agentune:agentune@localhost:5432/agentune_test).
src/agentune/
backends/ # XGBoost, LightGBM, CatBoost objective functions + tuning guides
core/ # Campaign service, DB, state machines, data models
cli.py # Click CLI commands
datasets.py # Dataset loaders (tabular + time-series via mlforecast)
mcp_server.py # MCP tools for Claude Code integration
runner.py # Round orchestration + MLflow logging
report.py # HTML report generation
scheduler.py # Budget clipping + stop conditions
summarizer.py # Signal extraction from Optuna studies
- Create a branch:
git checkout -b my-feature - Write tests first when possible
- Run the full test suite before submitting
- Keep commits focused -- one logical change per commit
- Create
src/agentune/backends/my_backend.pyfollowing theXGBoostBackendpattern - Implement the
ObjectiveBackendprotocol (seebackends/base.py) - Register in
backends/__init__.py - Add tests in
tests/test_backend_my_backend.py
- Add an entry to
DATASETSinsrc/agentune/datasets.py - For time-series: add
"temporal": True, "file": "my_dataset.parquet"and create a prep script inscripts/ - Add tests in
tests/test_datasets_*.py - Update the dataset table in
README.md
- Keep PRs focused on a single feature or fix
- Include tests for new functionality
- Update README.md if adding user-facing features
- CI must pass before merge