Skip to main content

Local Development

Use the local development flow when changing Fleet Manager, Dashboard, device agent, dispatcher, or tests.

Python Environment​

python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest

The default database is .kerrigan/kerrigan.db. Override it with:

KERRIGAN_DB_PATH=/tmp/kerrigan.db ./start.sh

Start Services​

./start.sh

By default:

  • Fleet Manager listens on http://127.0.0.1:8000
  • Dashboard listens on http://127.0.0.1:8001/admin
  • TFTP listens on UDP 69

On local hosts, start.sh may prompt for sudo before starting TFTP because UDP 69 is a privileged port. Use KERRIGAN_TFTP_PORT only for tests that do not need a DevKit to netboot from the standard TFTP port.

The Dashboard frontend is a React/Vite app under src/kerrigan/services/dashboard/web/. start.sh installs frontend dependencies when needed and builds the dashboard before starting the service.

Install Kerrigan Skills​

Kerrigan includes development skills and playbooks that help authors create workflow manifests and operate the repo consistently. Install them into your development environment with sima-cli:

sima-cli playbooks install gh:sima-neat/kerrigan

Run this once per development environment, then refresh or restart any tool that loads playbooks at startup.

Export OpenAPI​

PYTHONPATH=src python scripts/export_openapi.py
PYTHONPATH=src python scripts/export_openapi.py --check

The generated schema is published with the documentation at /openapi.json.

Build Packages​

./build.sh
scripts/build_device_agent_vulcan_package.sh
scripts/build_ubuntu_host_vulcan_package.sh