{"id":19534484,"url":"https://github.com/carsonfenimore/atomrust","last_synced_at":"2026-06-16T00:32:55.287Z","repository":{"id":259880101,"uuid":"876447860","full_name":"carsonfenimore/atomrust","owner":"carsonfenimore","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-04T15:47:46.000Z","size":4241,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-04T17:20:24.255Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carsonfenimore.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":"2024-10-22T01:40:04.000Z","updated_at":"2025-11-04T15:47:49.000Z","dependencies_parsed_at":"2024-10-28T16:05:31.796Z","dependency_job_id":"82e08bd2-719b-4bf7-a30e-e93f9d95490e","html_url":"https://github.com/carsonfenimore/atomrust","commit_stats":null,"previous_names":["carsonfenimore/atomrust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/carsonfenimore/atomrust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fatomrust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fatomrust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fatomrust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fatomrust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carsonfenimore","download_url":"https://codeload.github.com/carsonfenimore/atomrust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fatomrust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34386320,"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":"2024-11-11T02:14:29.362Z","updated_at":"2026-06-16T00:32:55.281Z","avatar_url":"https://github.com/carsonfenimore.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# atomrust\n\nAtomrust provides the foundational layer for AI-enabled raspberry pi cameras.  It efficiently (without decoding) streams RGB frames to tflite while streaming H.264 via RTSP.  Sensor stats can also be pushed via MQTT.  It does this efficiently, requiring only 10% CPU on pi zero 2w (excluding tflite processing)\n\nWhen coupled with a high-quality camera module, such as a Sony Starvis based sensor, and an nvr such as BlueIris, this can provide an extremely robust, in-house security system.\n\n## Requirements\n  - 64-bit versions pi OS \n  - ~128MB of ram \n  - around 0.5 cores on a pi zero 2w. \n    TFLite processing can consume a user-selectable number of cores.  For a pi zero 2w, if atomrust is configured to use 2 threads processing is capped at around 4fps.\n  - rpicam-apps build: v1.10.0 24906da670e9-dirty 04-11-2025 (10:35:52)\n  - libcamera build: v0.5.2+99-bfd68f78\n\n## Building\n\nBefore building remember to build/install libcamera/rpicam-apps. Once this is done you can build atomrust as follows:\n\n```\n  sudo apt install libssl-dev\n  cargo build\n```\n\n\u003e [!WARNING] \n\u003e tflite seems to have a small build error, as reported here: https://github.com/conan-io/conan-center-index/issues/24538.  You can fix this by:\n\n```\nvim `find . -iname \"spectrogram.cc\"`\n#include \u003ccstdint\u003e  // \u003c-- add this line right above the line saying #include \u003cassert.h\u003e\n```\n\n\n## Running\n\nNote: for objdet we have included mobilenetv2/coco labels inside the models subdir\n\nPopulate a config.yaml, such as the following\n\n    server:\n      host: 0.0.0.0\n      port: 5554\n    camera:\n      rtsppath: \"/video\"\n      width: 1920\n      height: 1080\n      lowres_width: 300\n      lowres_height: 300\n      framerate: 30\n      bitrate: \"4mbps\"\n      profile: \"main\"\n      intraperiod: 5\n    mqtt:\n      username: \"mqttuser\"\n      password: \"mqttpass\"\n      host: \"\u003cmqtt_broker_ip\u003e\"\n      port: \u003cmqtt_broker_port_usually_1883\u003e\n      obj_name: \"atomcam\"\n    pipeline: \n      model_filename: \"models/ssd_mobilenet_v2_coco_quant_postprocess.tflite\"\n      threshold: 0.6\n      label_filename: \"models/coco_labels.txt\"\n      num_threads: 2\n\nThen run\n\n    LOG=info LD_LIBRARY_PATH=../libcamlite/build/ ./target/debug/atomrust config.yaml\n\n## Development Status\nThis project is under active development and isn't fully ready.   We hope to have an easily-deployable release soon.  \n\n\n## Changelog\n - 0.1.2 \n    - support for latest libcamlite-rs\n    - make mqtt and pipeline stages optional - ommitting both results in a simple rtsp server doing no processing or reporting\n - 0.1.1 \n\t- added tflite (after accidentally deleting it before pushing the code)\n\t- tie together mqtt and tflite objdet - home assistant, ala mqtt discovery, should now know when an objdet occurs.\n\t  alarm clears 5 sec after nothing seen.\n - 0.1.0 \n\t- initial release performing parallel h264 rtsp streaming and no-op rgb (future feed for objdet)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarsonfenimore%2Fatomrust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarsonfenimore%2Fatomrust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarsonfenimore%2Fatomrust/lists"}