{"id":50877254,"url":"https://github.com/pulseengine/wohl","last_synced_at":"2026-06-15T11:02:04.823Z","repository":{"id":351199860,"uuid":"1209018414","full_name":"pulseengine/wohl","owner":"pulseengine","description":"Home supervision system built on PulseEngine. Wohl wahrt.","archived":false,"fork":false,"pushed_at":"2026-06-05T07:30:50.000Z","size":1857,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T08:06:20.052Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulseengine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-13T02:35:33.000Z","updated_at":"2026-06-05T07:30:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pulseengine/wohl","commit_stats":null,"previous_names":["pulseengine/wohl"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/pulseengine/wohl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulseengine%2Fwohl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulseengine%2Fwohl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulseengine%2Fwohl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulseengine%2Fwohl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulseengine","download_url":"https://codeload.github.com/pulseengine/wohl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulseengine%2Fwohl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-15T11:02:03.810Z","updated_at":"2026-06-15T11:02:04.818Z","avatar_url":"https://github.com/pulseengine.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wohl — Home Supervision System\n\n*Wohl wahrt.* — Maintains the well-being of your home.\n\n[![CI](https://github.com/pulseengine/wohl/actions/workflows/ci.yml/badge.svg)](https://github.com/pulseengine/wohl/actions/workflows/ci.yml)\n\nVerified embedded sensor monitoring on the [PulseEngine](https://github.com/pulseengine) toolchain. Built on [Relay](https://github.com/pulseengine/relay) stream transformers. Sensor nodes publish typed streams over CCSDS; a hub routes them through six verified monitor components and dispatches alerts.\n\nVerified. Always on.\n\n## Components\n\n| Component | Input | Output | Safety |\n|---|---|---|---|\n| Water Leak | stream\\\u003cwater-event\\\u003e | stream\\\u003calert\\\u003e | CRITICAL — immediate, no delay |\n| Temperature | stream\\\u003ctemperature\\\u003e | stream\\\u003calert\\\u003e | Freeze/overheat protection |\n| Air Quality | stream\\\u003cair-quality\\\u003e | stream\\\u003calert\\\u003e | CO2/PM2.5/VOC monitoring |\n| Door Watch | stream\\\u003ccontact-event\\\u003e | stream\\\u003calert\\\u003e | Open door/window detection |\n| Power Meter | stream\\\u003cpower-reading\\\u003e | stream\\\u003calert\\\u003e | Usage + anomaly detection |\n| Alert Dispatcher | stream\\\u003calert\\\u003e | notifications | Dedup, rate-limit, deliver |\n\nAll component cores are `no_std`, `no_alloc`, and verified by Kani bounded model checking.\n\n## Deploying\n\nThe `wohl-hub` orchestrator is published as a 4-target release tarball\n(`aarch64`/`x86_64` for Linux + macOS) with cosign-signed checksums and\nSLSA build provenance. Installing on a Raspberry Pi takes three steps:\ndownload + verify the tarball, drop in `/etc/wohl/wohl.toml`, enable\nthe systemd unit at `deploy/systemd/wohl-hub.service`. See\n[docs/INSTALL.md](docs/INSTALL.md) for the full walkthrough plus the\nDocker / Compose alternative.\n\n## Architecture\n\n- **Sensor nodes** — ESP32-C3 / STM32G0 firmware, CCSDS-framed streams\n- **Hub** — Raspberry Pi or STM32H7, runs the six monitors as Relay stream transformers\n- **System model** — AADL specification in `spar/` (firmware threads, hardware nodes, deployed home topology)\n- **Traceability** — ASPICE artifacts in `artifacts/{sysreq,swreq,swarch,swdd,verification}/`, validated by [Rivet](https://github.com/pulseengine/rivet)\n\n## Build\n\n```bash\n# Workspace tests + proptest\ncargo test --workspace\n\n# Kani bounded model checking (per component)\nfor c in wohl-leak wohl-temp wohl-air wohl-door wohl-power wohl-alert; do\n  cargo kani -p \"$c\"\ndone\n\n# Cargo-fuzz smoke (60s per target — coverage currently `fuzz_leak`, `fuzz_temp`)\ncargo fuzz run fuzz_leak -- -max_total_time=60\ncargo fuzz run fuzz_temp -- -max_total_time=60\n\n# ASPICE artifact traceability\nrivet validate\n```\n\nToolchain: see `rust-version` in workspace `Cargo.toml`.\n\nThe `relay` and `rivet` repositories must be cloned as siblings of `wohl/` for path-dependencies to resolve.\n\n## Verification\n\n| Track | Status |\n|---|---|\n| Kani BMC (all components) | gated by CI |\n| proptest suites | gated by CI |\n| cargo-fuzz | smoke gated by CI; coverage expansion tracked via issues |\n| Verus deductive proofs | `wohl-alert` dedup + rate-limit invariants proven; gated by CI, tied to `engine.rs` by a conformance test |\n| AADL system model | active in `spar/` |\n| Rivet ASPICE validation | gated by CI |\n\n## License\n\nLicensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full text.\n\n## Links\n\n- [PulseEngine](https://github.com/pulseengine) — umbrella project\n- [Relay](https://github.com/pulseengine/relay) — stream transformers\n- [Rivet](https://github.com/pulseengine/rivet) — ASPICE traceability\n- Issue [#1](https://github.com/pulseengine/wohl/issues/1) — CI initiative\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulseengine%2Fwohl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulseengine%2Fwohl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulseengine%2Fwohl/lists"}