scheduler queue
One SQLite file. Inspectable from anywhere.
Every task — pending, scheduled, completed, failed, cancelled — lives in ~/.tidegap/queue.db. The Claude Code plugin, the OpenClaw plugin, the MCP server, and the CLI all read and write this same file. Inspect it however you like.
Status vocabulary
queued— Just created; the scheduler hasn't picked a window yet (rare race window — usually fills within 1s).scheduled— Window picked. Will dispatch at the chosen UTC hour inside the deadline. Sits here until the tick daemon fires.submitted— Sent to the provider's Batch API (deadline more than 24 h away). The provider runs it within its 24 h batch window; a later tick collects the result.running— The provider call is in-flight. For Batch-API tasks this can be hours; for sync tasks it's seconds.completed— Provider returned. A carbon receipt is written: actual intensity, tokens in/out, dispatched_at timestamp.failed— Provider returned an error. The reason is persisted; the /tidegap:retry slash command (or the retry_task MCP tool) re-dispatches.cancelled— Manually cancelled. Idempotent — already-completed tasks return their existing status if you cancel them.
See it on your machine: tidegap ui
tidegap ui opens a local page with three views: a timeline of queued tasks on the forecast curve (tasks that must run before your weekly quota resets are listed as their own group), an inbox of finished tasks you have not opened, and a task detail view with the prompt, the result, the carbon receipt and the raw provider response. It shows when the dispatcher last ran. It cannot dispatch or cancel anything.
The page listens on 127.0.0.1 only. Every API request needs a random token that is printed once with the link and changes each time you start it. Task data never leaves your machine; the timeline asks the grid provider your tick already uses for the forecast.
tidegap ui
tidegap ui: http://127.0.0.1:53817/#token=<random, per run>
Serving on 127.0.0.1 only. The link carries a one-run access token; do not share it. Press Ctrl-C to stop.tidegap tick also posts a desktop notification when a task completes or fails, and the Claude Code plugin prints one line at session start when finished tasks are unread.
Inspect from the CLI
# All tasks (any status)
tidegap queue list
# Filter by status, deadline kind, or unread results
tidegap queue list --status scheduled
tidegap queue list --kind quota_reset
tidegap queue list --unread
# One task: prompt, result, receipt (marks it read)
tidegap queue show <task_id>
# Receipts only (completed tasks)
tidegap receipts list
tidegap receipts list --since 2026-05-01
# Verify a receipt's Ed25519 signature
tidegap verify <task_id>From the agent (any MCP host)
The same queue is reachable through the MCP check_queue_status tool. Your agent can answer "what's queued?" or "did that task run?" inline:
> /tidegap:check
Total tasks: 3
scheduled: 1 · completed: 2
> /tidegap:check 7f3a2b9e
status completed
region US-CAL-CISO
scheduled 22:15 UTC (4h ago)
completed 22:15:08 UTC
result <the LLM response>Why not show a live queue here?
This site has no back-channel to your machine, and it should not: a live queue here would mean storing your prompts on a server. The live view is tidegap ui, served from your own machine.