Periodic Agent jobs. On time, every time.

Describe the schedule once. SandBase triggers each Agent run, keeps the execution record, and delivers the result where it belongs.

Live scheduleEnabled

Next run09:00

Tomorrow · Asia/Tokyo

  1. 01Research sourcesExa · 24 resultsDone
  2. 02Analyze changesMarket Intelligence AgentReady
  3. 03Deliver the briefingNotion · #market-updatesQueued
Last 30 days
22 runs
Delivered
100%
Sets the cadence
1 sentence
Recorded per trigger
1 run
Code, console, or API
3 ways

Set an Agent’s run time in one sentence.

No cron to learn. Describe when the work should happen, and SandBase generates the cadence, the timezone, and the next run.

Describe the run time

Every weekday at 9 AMGenerate schedule

  1. 01 Describe
  2. 02 Generate
  3. 03 Confirm

Schedule generatedReady

Agent
Market Intelligence Agent
Cadence
Every weekday at 9 AM
Cron
0 9 * * 1-5
Timezone
Asia/Tokyo

Next runs

  1. 01Mon · 09:00
  2. 02Tue · 09:00
  3. 03Wed · 09:00

Schedule enabledSave schedule

One task, as many schedules as it needs.

The Agent defines the work, the inputs, and what done looks like. Each Schedule sets the cadence, timezone, environment, and customer. Every trigger creates its own Agent run.

Agent · Reusable work

Market Intelligence Agent

Version 12 · Production

Job
Research market changes
Input
Market · Region · Sources
Result
Briefing with cited sources

Defines what done looks like

1 Agent · many schedules

Schedules · When and for whom
  1. 01Tokyo daily briefingWeekdays · 09:00 · Asia/TokyoEnabled
  2. 02London weekly reviewMondays · 08:30 · Europe/LondonEnabled
  3. 03Customer watchEvery 6 hours · customer_2048Enabled

Defines when, and for whom

Each trigger creates a run

Run #1082Completed

Run #1083Queued

Run #1084Next · 09:00

Result, trace, and cost are recorded for each run.

Not code on a timer. Business work that keeps getting done.

Pick a scenario to see how SandBase chains data, Agent judgment, and team action into a service that runs for the long term and can be audited.

Live configurationEnabled
  1. Stripe
  2. HubSpot
  3. Slack
Runs
Weekdays · 08:30 · customer timezone
Delivers
Renewal risk list, by priority
Business value
Reach high-risk customers earlier

schedule.yaml

agent: renewal-riskschedule: weekdays 08:30timezone: customer.timezonealert: risk_score >= 0.72

Next runTomorrow · 08:30Full run history included

Define the task once. Run it on different rhythms.

The Agent decides what to do; the Schedule decides when, for whom, and where it runs. Keep fixed jobs in version control, and adjust business schedules anytime from the console or the API.

  1. Versioned schedule

    Managed with the Agent configuration

    For internal research, monitoring, and reporting. Cadence, timezone, and Agent version live in one reproducible configuration.

    Read the Schedules guide
    schedule.tsVersioned
    schedule({
      agent: "market-intelligence",
      cron: "0 9 * * 1-5",
      timezone: "Asia/Tokyo",
      version: "v12",
    });

    Every weekday · 09:00 Tokyo

  2. Console schedule

    Change the timing without redeploying

    Create, enable, pause, and edit Schedules in the console. Plain language becomes a clear cron expression and next run time.

    Open Schedules
    Schedule createdDraft
    AgentRenewal Risk Agent
    Describe the rhythmCheck renewal risk every 6 hoursGenerate
    Cron0 */6 * * *
    TimezoneUTC

    Valid schedule · Next run 18:00

  3. API / SDK schedule

    Create a schedule for each customer

    Your product binds a cadence, a timezone, and an external id to each account through the API or SDK, without creating the same plan twice.

    View the API reference
    create-schedule.tsSDK
    await schedules.create({
      agent: "renewal-risk",
      cron: "0 0 * * *",
      timezone: customer.timezone,
      externalId: customer.id,
      deduplicationKey: `renewal-${customer.id}`,
    });

    One Agent · many customer schedules

Schedules trigger the work. Monitoring shows every result.

Each trigger becomes a trackable Agent run. Follow the steps live, get alerted when something fails, and find the cause in the same trace.

  1. Runtime monitoringLive
    • market-intelligence()Running00:42
    • renewal-risk()FailedInvestigate
    • daily-brief()Completed01:18
    • customer-watch()Queued—

    Live status

    See the state of every job first.

    Running, queued, completed, and failed share one status language, so the team knows which job needs attention before opening a log.

    LiveEnvironment-awareHistory

  2. Run #1082 · Market intelligenceExecuting
    • schedule.trigger
    • exa.search
    • model.reason
    • notion.create

    Live trace4 steps · 3.8s · $0.024

    Execution trace

    Follow the Agent’s actual path, step by step.

    Model calls, tool actions, retries, and output line up on one timeline, so time and bottlenecks are not buried in scattered logs.

  3. New alertEnabled

    SlackEmailWebhook

    Channel#agent-operations

    Alert when

    • An Agent run fails
    • The retry limit is reached

    Environment

    • Production
    • Staging

    Test alert delivered · 2s ago

    Alerts

    Tell the right people when something fails.

    Send email, Slack, or webhook alerts by environment and event. Each alert links straight to its run, not just to “something went wrong.”

  4. Run historyFailed · 3

    Search runsStatus · FailedProduction

    RunAgentDurationStatus
    #1087renewal-risk00:18Failed
    #1083market-watch01:42Failed
    #1071daily-brief00:34Failed

    Investigate

    Filter the failures and pick up from the failed step.

    Filter runs by status, Agent, environment, and time. The failure reason, the input, and the retry history stay in the same record.

The schedule triggers the runs. Monitoring confirms the work is done.

See the models, tools, deliverables, cost, and anomalies of every run, then take what you learn back to the Agent.