about
Smarter scheduling for AI workloads.
ebb-ai is an open-source MCP scheduler. Give it any LLM task with a deadline, and it routes the dispatch to off-peak hours — when the electricity grid is less loaded, providers' APIs are cheaper and faster, and per-task carbon is lower. A single shift with four parallel wins.
Why this exists
Grid load. US data centers are projected to consume 6.7–12 % of national electricity grid load by 2028 (DOE 2024), driven primarily by AI compute. Today, agent code dispatches synchronously by default — every "summarize this overnight" and "analyze by Friday" request piles onto peak hours. ebb-ai automates the deferral: a huge fraction of agent work (nightly digests, evaluator sweeps, batch enrichment, long-horizon research) doesn't need to run right now and shouldn't.
Cost. Anthropic and OpenAI Batch APIs are priced 50 % below their sync siblings in exchange for a 24-hour SLA. ebb-ai auto-routes through Batch when the deadline allows. The same prompt, half the bill.
Latency. Provider servers have variable queueing latency depending on global request volume. Anthropic explicitly expanded off-peak capacity in 2026 — doubling usage limits before 8 a.m. ET, after 2 p.m. ET on weekdays, and all weekend — citing smoothed demand as the goal. The implication for sync calls: shorter queues at off-peak, faster observed first-token times.
Carbon. Carbon-intensity in any given grid region swings 5-10× across a single day as solar / wind / hydro come on- and off-line. A prompt dispatched at noon in California can be six times dirtier than the same prompt at 4 AM. ebb-ai writes a per-task carbon receipt against the actual grid intensity at the moment of dispatch — auditable, region-aware, reproducible from the persistent SQLite ledger.
How it works
- Your agent (Claude Code, Claude Desktop, Cursor, Windsurf, Continue, Cline, Zed, Goose, OpenClaw, or any MCP host) calls one of ebb-ai's nine MCP tools — for example,
schedule_taskwith a prompt, region, and deadline. - ebb-ai fetches the live carbon-intensity forecast for that region — UK National Grid ESO (key-less), U.S. EIA, ENTSO-E for Europe, or Electricity Maps as universal fallback.
- It scores every hour inside the deadline and picks the cleanest one — with a 15 % tolerance band plus randomized tie-break so the global fleet doesn't converge on a single UTC hour (the "everyone at 03:00 UTC" pathology).
- The task is persisted to a local SQLite queue at
~/.ebb-ai/queue.db. When the chosen hour arrives, theebb tickdaemon dispatches via the provider's Batch API (50 % discount on the bill, same answer) when the deadline allows. - A carbon receipt is written: timestamp, region, exact intensity used for scoring, tokens in/out, dollar cost vs peak. Inspectable via
ebb statson the CLI. The Claude Code plugin, the OpenClaw plugin, the MCP server, and the CLI all read and write this same file — defer in one host, check in another.
Who it's for
- Builders running deferrable AI — anyone whose agent has "by tomorrow"-class workloads (nightly digest jobs, batch evaluations, research sweeps, multi-step report generation).
- Compute infrastructure operators — anyone managing inference fleets where grid load and off-peak capacity shape provisioning decisions. ebb-ai gives them per-task telemetry about when their tasks actually run.
- Cost-sensitive engineering teams — anyone spending non-trivial money on Anthropic / OpenAI calls. Automatic Batch-API routing pays for itself in days.
- Engineering teams with carbon commitments — companies with internal CO2e budgets or external ESG reporting that need defensible per-job numbers rather than spreadsheet estimates.
- Researchers — the deterministic mock grid feed makes simulations reproducible; the persistent SQLite ledger makes longitudinal study cheap.
- MCP host implementers — ebb-ai is a reference implementation of load-aware scheduling extensions to the Model Context Protocol; the upstream PR draft spells out the schema shape.
What you can do right now
live data
Carbon-intensity map
Real numbers for 7 grid regions, updated every few minutes.
try it without code
Best-window finder
Pick a region + deadline; see the optimal dispatch hour and the CO2e savings vs dispatching now.
install — 30 seconds
Pick your host
One-line install picker for 13 hosts: Claude Code, Cursor, Claude Desktop, Windsurf, Continue, Cline, Zed, Goose, OpenClaw, mcphost, Python lib, Node lib.
openclaw
@vitalini/ebb on ClawHub
Native OpenClaw plugin. Install with openclaw plugins install clawhub:@vitalini/ebb.
source
GitHub repository
Apache-2.0. TypeScript + Python ports. 204 tests. PRs welcome.
mcp directory
mcp.so/server/ebb-ai
Listing in the largest community MCP-server catalog.
Status
v0.8.x (operator preview). The scheduler is production-grade — the even-distribution simulation routes 10 000 synthetic tasks across seven regions with under 11 % max-bucket concentration, the SQLite ledger survives process restart, and per-region routing is auto-wired. Live carbon feeds (UK National Grid ESO, US EIA, ENTSO-E, Electricity Maps) run on 7 of 7 regions; no region falls back to the mock curve.
The public surface is still pre-1.0: API shapes can change in minor versions. Deferred for v0.9: upstream MCP spec PR, opt-in aggregate leaderboard, WattTime marginal-emissions feed, cross-provider routing. v1.0 will freeze the API surface.
Maintainer
Built by Vitalii Borovyk (independent, open-source). Issues, PRs, and feature requests: github.com/Vitalini/ebb-ai/issues.