wyrd/tools
esc

    ↑↓ Move ↵ Open t3c results first Search by Pagefind
    Releases

    Schedules, providers and usage

    Schedules, providers and usage

    These commands use the selected server profile. Text output uses concise tab-separated lines. --json returns one {data, exitCode, error?} object. Normal exit codes apply.

    Scheduled tasks

    t3c schedule list
    t3c schedule show <task-id>
    t3c schedule create --title 'Sample notes' --prompt 'Summarize the sample notes.' \
      --every 1h --provider codex --model gpt-6-luna --mode approval-required --disabled
    t3c schedule update <task-id> --at 09:30 --weekdays 1,3,5
    t3c schedule enable <task-id>
    t3c schedule disable <task-id>
    t3c schedule run <task-id>
    t3c schedule delete <task-id>

    Choose a trigger with --every <duration> (at least 1m), --at HH:MM with optional --weekdays 0,1,2,3,4,5,6 (Sunday is 0), or --webhook. Fixed times use the server’s local clock. schedule run requests an immediate run and returns the task; it does not wait for the assistant. The server refuses manual runs of webhook tasks and tasks that are already running.

    Create needs a title, prompt and trigger. It defaults to enabled; --disabled creates it disabled. A prompt can come from --prompt or --prompt-file <file>; --prompt-file - reads stdin. Without a project selection, create uses the selected thread’s project, or the scratch project. Model defaults come from the thread, project or server; runtime mode comes from the server. Use --mode when no server default is available. Interaction mode defaults to default and the workspace defaults to the project root.

    Create and update accept a JSON object with --input <file> or --input - for stdin. Focused flags override matching JSON fields. Only one input can read stdin. The accepted fields are title, prompt, enabled, schedule, projectId, threadId, workspaceStrategy, modelSelection, runtimeMode and interactionMode. Identity and provenance fields are not input fields. A one-time schedule, {"type": "once", "runAt": "2030-01-31T09:30:00+02:00"}, goes in schedule and needs an ISO date and time with an offset. Servers that report the oneTimeSchedules capability accept it; schedule show prints it as once and the run time.

    t3c schedule create --input - --project <project-id> --provider codex \
      --model gpt-6-luna --mode approval-required <<'JSON'
    {
      "title": "Sample webhook",
      "prompt": "Summarize {{body.action}}.",
      "enabled": false,
      "schedule": {
        "type": "webhook",
        "filters": [{"path": "body.action", "op": "equals", "value": "sample"}]
      }
    }
    JSON
    
    t3c schedule update <task-id> --input - <<'JSON'
    {"schedule":{"type":"webhook","signature":null,"filters":[]}}
    JSON

    An update keeps omitted settings. The library reads the existing task and saves it with the patch, so concurrent edits can overwrite each other. For a webhook, omitting the signature, delivery-age bound, dedupe or filters keeps that stored setting. signature: null clears the signature check, maxDeliveryAgeMinutes: null clears its bound, and filters: [] clears filters. An omitted signing secret keeps the stored secret. Signature input uses header, encoding (hex or base64), prefix and an optional secret or secretRef. Supply signing values through JSON input; saved tasks return no signing secret. See the library API for webhook filters and dedupe fields.

    Create and target-changing updates check that a bound thread belongs to the effective project before saving. This includes a project-only update that keeps the existing thread. A mismatch exits 2; failed target reads retain their normal errors.

    Execution selections apply to create and update:

    SelectionOptions
    Project--project <id> or --project-path <directory>
    Target--thread <id>; --thread-mode <mode>; update also accepts --new-thread
    Model--provider <exact-instance-id>, --model <slug-or-alias>
    Model optionsRepeat --model-option key=value; --clear-model-options starts empty
    Modes--mode <runtime-mode>, --interaction-mode <mode>
    New worktree--worktree, optional --base-ref <ref>, --branch <name>, --start-from-origin or --no-start-from-origin
    Existing worktree--existing-worktree <path> selects the path and branch advertised by the server
    Project root--root

    Model options use the selected model’s advertised boolean and select choices. Explicit entries override inherited entries. On update, option flags use the stored model unless a provider or model selection changes it. A new worktree’s base ref defaults to HEAD; an omitted start-from-origin value stays omitted. Thread modes are new_thread, a thread per run; continue, one thread that keeps its context; and fresh_session, one thread that starts each later run in a new provider session. A one-thread task without --thread creates its thread on the first run. Without a mode, a bound thread selects continue and no thread selects new_thread. Update keeps the stored mode, but a thread bound to a new_thread task selects continue. --new-thread and JSON threadId: null select new_thread. new_thread with a thread exits 2. schedule show prints the mode and the thread, or - before the first run. JSON input accepts threadMode. JSON objects use the library’s workspaceStrategy and modelSelection types.

    Webhook endpoints and deliveries

    t3c schedule endpoint <task-id> --json
    t3c schedule delivery list <task-id>
    t3c schedule delivery show <task-id> <delivery-id> --json
    t3c schedule rotate-token <task-id> --json

    Endpoint data includes taskId, relative path, direct server url, optional or null connectUrl, and hasSecret. The path and URLs contain the endpoint token. A direct URL does not establish public reachability. Without T3 Connect, connectUrl is null. Rotation invalidates the old token and returns {task, endpoint} with the replacement endpoint.

    Delivery JSON retains the recorded query, headers, body, truncation marker and rendered prompt. Text leaves headers to JSON. New delivery outcomes remain strings. Reading schedules needs orchestration:read; mutations, endpoint lookup and delivery records need orchestration:operate. Readers without that scope do not receive webhook endpoints.

    Provider status

    t3c provider status
    t3c provider status <exact-instance-id> --json

    Provider status reports installation, authentication, availability and usage limits from the live server configuration. An unknown exact instance exits 10. Reading status does not log in, install a provider or reset its limits.

    Historical usage

    t3c usage summary --since-day 2026-01-01 --until-day 2026-01-02 \
      --time-zone Etc/UTC --json
    t3c usage summary --since-day 2026-01-01 --until-day 2026-01-02 \
      --time-zone Etc/UTC --resolution hour \
      --since-time 2026-01-01T08:00:00Z --until-time 2026-01-02T08:00:00Z --await-refresh

    Both calendar dates and the IANA time zone are required. --resolution accepts day or hour; hourly queries require valid --since-time and --until-time instants spanning more than zero and at most 24 hours. --await-refresh waits for slow source refreshes instead of cached answers. Usage needs diagnostics:read.

    JSON preserves usage buckets, cost-source provenance, source diagnostics, pricing and scan metadata. Text prints each bucket and source separately. Reasoning tokens are part of output tokens. Current provider limits and historical usage remain separate; the CLI does not invent a grand total.