{"id":47909347,"url":"https://github.com/nullclaw/nullboiler","last_synced_at":"2026-04-04T05:13:36.832Z","repository":{"id":341492651,"uuid":"1169848873","full_name":"nullclaw/nullboiler","owner":"nullclaw","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-09T16:17:02.000Z","size":2889,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-09T21:42:40.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Zig","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/nullclaw.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-03-01T10:12:01.000Z","updated_at":"2026-03-09T16:17:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nullclaw/nullboiler","commit_stats":null,"previous_names":["nullclaw/nullboiler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nullclaw/nullboiler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullclaw%2Fnullboiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullclaw%2Fnullboiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullclaw%2Fnullboiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullclaw%2Fnullboiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nullclaw","download_url":"https://codeload.github.com/nullclaw/nullboiler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullclaw%2Fnullboiler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31388302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"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-04-04T05:13:35.753Z","updated_at":"2026-04-04T05:13:36.822Z","avatar_url":"https://github.com/nullclaw.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NullBoiler\n\nNullBoiler is an orchestration engine for AI agents.\n\nIt is intentionally narrow: it decides what should run, when it should run, and which worker should execute it.  \nIt does not replace the task tracker and it does not replace the agent runtime.\n\nYou do not need all components together.  \nChoose only the pieces required for your workflow.\n\n## Design Principle\n\n`tracker = source of truth`  \n`orchestrator = policy engine`  \n`agent = executor`\n\n### 1) Tracker: [nulltickets](https://github.com/nullclaw/nulltickets)\n\nUse nulltickets as the authoritative task system for AI agents:\n\n- Stores tasks, states, priorities, and ownership.\n- Preserves durable history of task lifecycle.\n- Acts as the canonical queue/source of truth for pending work.\n\n### 2) Orchestrator: [nullboiler](https://github.com/nullclaw/nullboiler)\n\nUse nullboiler to apply orchestration policy:\n\n- Pulls/selects work from tracker or another source.\n- Applies scheduling and routing strategies.\n- Enforces concurrency limits, retries, and backoff policies.\n- Dispatches work to one or many agents/workers.\n\nNullBoiler should not become a task tracker or artifact database.\n\n### 3) Agent Runtime: [nullclaw](https://github.com/nullclaw/nullclaw) or another compatible worker\n\nUse an agent runtime as the execution engine:\n\n- Receives a concrete task/job to run.\n- Executes tools, code, and model interactions.\n- Returns execution outputs/events back to the orchestrator/tracker flow.\n\n`nullclaw` is the reference runtime, but `nullboiler` can also orchestrate other compatible workers\n(for example OpenClaw/OpenAI-compatible, ZeroClaw, or PicoClaw via bridge).\n\nAgents should execute work, not own global orchestration policy.\n\n## Why This Separation Exists\n\nTeams often try to move tracker and artifact responsibilities into the orchestrator.  \nThis project keeps boundaries strict on purpose:\n\n- Tracker owns durable truth.\n- Orchestrator owns coordination policy.\n- Agent owns execution.\n\nThis keeps the architecture modular, simpler to reason about, and easier to evolve.\n\n## Supported Compositions\n\n- `nullclaw` only: single-agent direct execution.\n- `nullboiler + nullclaw`: orchestrated execution without dedicated tracker.\n- `nullboiler + other compatible agents`: orchestrated execution without `nullclaw` dependency.\n- `nulltickets + nullclaw`: tracker-driven execution loop.\n- `nulltickets + nullboiler + nullclaw`: full multi-agent orchestration with durable task source.\n\nSee additional integration docs in [`docs/`](./docs).\n\n## Workflow Graph Features\n\nThe orchestration graph runtime supports:\n\n- `task`, `agent`, `route`, `interrupt`, `send`, `transform`, and `subgraph` nodes\n- run replay, checkpoint forking, breakpoint interrupts, and post-start state injection\n- `send` fan-out with canonical `items_key` and configurable `output_key`\n- task/agent output shaping via `output_key` and `output_mapping`\n- template access to `state.*`, `input.*`, `item.*`, `config.*`, and `store.\u003cnamespace\u003e.\u003ckey\u003e`\n- `transform.store_updates` for writing durable workflow memory back to NullTickets\n\nStore-backed templates and `store_updates` require a NullTickets base URL. The\nruntime resolves it from workflow fields such as `tracker_url` or from run config\n(`config.tracker_url` / `config.tracker_api_token`), which are injected into\nstate as `__config`.\n\n## Config Location\n\n- Default config path: `~/.nullboiler/config.json`\n- Override instance home with `NULLBOILER_HOME=/path/to/dir`\n- Override config file directly with `--config /path/to/config.json`\n\nWhen `NULLBOILER_HOME` is set, `nullboiler` reads `config.json` from that directory and\nresolves relative paths like `db`, `strategies_dir`, `tracker.workflows_dir`, and\n`tracker.workspace.root` relative to that config file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullclaw%2Fnullboiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnullclaw%2Fnullboiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullclaw%2Fnullboiler/lists"}