Local development¶
Guardian components use sibling checkouts so each repository can be built and released independently:
guardian/
platform/
agent-common/
agent-linux/
agent-windows/
agent-android/
docs/
translations/
versions/
Clone only the components you are changing. Agent builds expect
../agent-common; UI builds expect ../translations. CI uses the same layout.
Local setup¶
The platform repository owns server setup:
The server uses a project virtual environment at server/.venv with dependencies from server/requirements-dev.txt.
Translations¶
Open new or changed UI strings in the translations repository first. Validate the product checkout against those catalogs:
Product pull requests link the translations pull request using
Translations: #<number>.
Server¶
After setup:
Second terminal:
Default login: admin / admin. Approve devices at /admin/devices.
Tests¶
Run the server test suite in parallel:
Debug agent¶
source .env
cd server
./.venv/bin/python debug_agent.py \
--server-url "ws://127.0.0.1:5000/ws" \
--agent-version "v1.0.0-dev"
Delete debug-agent.json to simulate a new device.
Rust agents¶
cd agent-common && cargo test
cd ../agent-linux && cargo check
# Run agent-windows checks on Windows.
Full Linux enforcement requires TimeKpr-nExT D-Bus on the target machine.
Android¶
Build the native Rust library and generate the UniFFI Kotlin bindings first:
Then build the debug APK:
Docs site¶
cd docs
python3 -m venv .venv-docs
.venv-docs/bin/python -m pip install -r requirements-docs.txt
.venv-docs/bin/mkdocs serve
Validate documentation changes with: