{"id":49583617,"url":"https://github.com/buffbiryani/autonode","last_synced_at":"2026-05-03T21:36:45.295Z","repository":{"id":341249758,"uuid":"1169446263","full_name":"buffbiryani/autonode","owner":"buffbiryani","description":"Industrial IoT network monitoring with AI agents built on Jaseci","archived":false,"fork":false,"pushed_at":"2026-02-28T18:05:10.000Z","size":51380,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T21:36:16.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://autonodenet.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buffbiryani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-28T17:44:39.000Z","updated_at":"2026-02-28T23:44:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/buffbiryani/autonode","commit_stats":null,"previous_names":["buffbiryani/autonode"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buffbiryani/autonode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buffbiryani%2Fautonode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buffbiryani%2Fautonode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buffbiryani%2Fautonode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buffbiryani%2Fautonode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buffbiryani","download_url":"https://codeload.github.com/buffbiryani/autonode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buffbiryani%2Fautonode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32586187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-05-03T21:36:44.694Z","updated_at":"2026-05-03T21:36:45.278Z","avatar_url":"https://github.com/buffbiryani.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autonode — AI IoT Dead Zone Solver\n\n\u003e Industrial IoT mesh-network monitoring with Jac/Jaseci graph agents.\n\n![Autonode Dashboard](https://img.shields.io/badge/status-live-22c55e?style=flat-square) ![Jac](https://img.shields.io/badge/backend-Jac%200.11.2-38bdf8?style=flat-square) ![React](https://img.shields.io/badge/frontend-React-61dafb?style=flat-square)\n\n## What It Does\n\nAutonode models an industrial warehouse as a persistent graph and runs a 5-step agent pipeline to handle sensor incidents:\n\n1. `PulseAgent` (`HeartbeatMonitor`) detects stale/missed heartbeats.\n2. `DeadzoneAgent` (`DeadZoneMapper`) maps affected sensor spread.\n3. `CauseAgent` (`RootCauseAnalyzer`) identifies likely root cause.\n4. `Rerout Agent` (`ReroutingAgent`) attempts mesh reroute when auto-fixable.\n5. `DispatchAgent` creates work-order payloads for unresolved incidents.\n\n## Architecture\n\n```\nReact Frontend (localhost:3000)\n            |\n            | HTTP (REST)\n            v\nJac Backend (localhost:8000)\n  - server.jac (public API walkers)\n  - main.jac   (graph schema + agent walkers)\n```\n\nGraph shape:\n\n- 1 warehouse\n- 4 zones\n- 4 routers\n- 24 sensors\n\n## Important Behavior Notes\n\n- Backend agents are real Jac walkers and mutate graph state when pipeline walkers are called.\n- There is no always-on backend daemon loop by default; execution is request-driven (for example `api_ingest`, `api_heartbeat`, `api_run_pipeline`).\n- The current React dashboard includes rich UI-side simulation timelines for incident playback; backend is still used for graph setup/state/reset and API-based flows.\n\n## Tech Stack\n\n- Backend: Jac/Jaseci + Python 3.11\n- Frontend: React 19 (CRA)\n- API: Walker endpoints exposed via `jac start`/`jac serve`\n- Notifications: Slack webhook + SMTP email (optional, env-configured)\n\n## Local Run (Recommended, No Docker Required)\n\n### Prerequisites\n\n- Python 3.11+\n- Node.js 18+\n\n### 1) Start Backend\n\n```bash\ncd backend\npython3 -m venv .venv\nsource .venv/bin/activate   # Windows: .venv\\Scripts\\activate\npython -m pip install -U pip\npython -m pip install -r requirements.txt\njac start server.jac\n```\n\nIf `jac start` is unavailable in your CLI build:\n\n```bash\njac serve server.jac -ho 0.0.0.0 -p 8000\n```\n\nBackend URL: `http://localhost:8000`\n\n### 2) Start Frontend\n\n```bash\ncd frontend\nnpm install\nnpm start\n```\n\nFrontend URL: `http://localhost:3000`\n\n## API Endpoints\n\nMost endpoints are `POST` with JSON body.\n\n| Endpoint | Description |\n|---|---|\n| `/walker/api_setup` | Initialize warehouse graph (idempotent) |\n| `/walker/api_state` | Get full graph snapshot |\n| `/walker/api_ingest` | Ingest telemetry update for one sensor |\n| `/walker/api_heartbeat` | Run heartbeat monitor pass |\n| `/walker/api_simulate_dropout` | Force dropout for a sensor |\n| `/walker/api_run_pipeline` | Run end-to-end incident pipeline |\n| `/walker/api_diagnose` | Diagnose one sensor |\n| `/walker/api_dispatch` | Create + deliver one dispatch |\n| `/walker/api_business_metrics` | Runtime metrics snapshot |\n| `/walker/api_notification_health` | Notification integration health |\n| `/walker/api_reset` | Reset sensor state and optionally metrics |\n\nUseful discovery endpoints:\n\n| Endpoint | Description |\n|---|---|\n| `GET /walkers` | List available walkers |\n| `GET /functions` | List available functions |\n\n## Demo Flow\n\n1. Open `http://localhost:3000`.\n2. Confirm the UI shows backend connection as live.\n3. Trigger a failure scenario from the control panel.\n4. Inspect logs, sensor status transitions, and work-order/self-heal outcomes.\n5. Click reset to return graph/UI state to baseline.\n\n## Project Structure\n\n```text\nAutonode/\n├── backend/\n│   ├── main.jac              # Graph schema + core walkers\n│   ├── server.jac            # Public API walkers\n│   ├── automation_runtime.py # Metrics/event/work-order runtime state\n│   ├── notify.py             # Slack/SMTP notifications\n│   ├── fullstack.jac         # Fullstack entrypoint\n│   └── jac.toml\n├── frontend/\n│   ├── src/App.js            # Main React dashboard\n│   └── package.json\n└── README.md\n```\n\n## Why Jac\n\n- The warehouse is naturally represented as a graph.\n- Agent logic maps cleanly to walkers traversing nodes/edges.\n- Graph state persists across requests.\n- API endpoints come directly from published walkers.\n\nBuilt for the Jaseci Hackathon 2026.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuffbiryani%2Fautonode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuffbiryani%2Fautonode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuffbiryani%2Fautonode/lists"}