HackMD sensor node that polls notes and emits KOI bundles.
- Python 3.10+
uv
Create .env from .env.example:
cp .env.example .envRequired:
PRIV_KEY_PASSWORDHACKMD_API_TOKEN
Optional runtime targeting/overrides:
HACKMD_WORKSPACE_IDHACKMD_NOTE_IDS(comma-separated note IDs)HACKMD_POLL_INTERVAL_SECONDSHACKMD_MAX_NOTES_PER_POLLHACKMD_STATE_PATHHACKMD_RETRIESHACKMD_BACKOFF_BASE_SECONDSHACKMD_BACKOFF_MAX_SECONDS
Precedence:
.envoverrides are applied first when non-empty.- If env override is empty, node falls back to
config.yamlvalues.
uv sync --refresh --reinstall
set -a; source .env; set +a
uv run python -m koi_net_hackmd_sensor_nodeExpected startup signal: node runs on 127.0.0.1:8001 and logs HackMD polling activity.
- Default first contact is coordinator:
http://127.0.0.1:8080/koi-net. - Default node port:
8001.
config.yamlis auto-generated on first run.config.yaml.examplecontains all defaults, including env mappings.
- Missing token errors: set
HACKMD_API_TOKEN. - No notes processed: verify
HACKMD_WORKSPACE_ID/HACKMD_NOTE_IDS. - Missing
PRIV_KEY_PASSWORD: export env before startup.