Skip to content

Working hours & timezone

Your agent has a concept of “working hours” — the window of time it considers active. This matters more than you might expect because it affects when scheduled tasks run and when your agent delivers things to you.

Set during onboarding. Your agent uses it for everything:

  • Scheduled tasks (cron expressions are in your local time)
  • Meeting times when drafting calendar invites
  • “Today” and “tomorrow” — relative to where you are, not UTC
  • Delivery timing for notifications

You can change your timezone at any time from Settings → Agent → Timezone in the dashboard. The change applies to all future scheduled tasks. Existing cron jobs you created earlier keep their original schedule (but the display updates to show your new local time).

By default, your agent treats 9am–12am (midnight) as working hours in your timezone. Outside those hours, it:

  • Queues any non-urgent notifications to deliver when you’re back online
  • Delays non-critical background tasks until morning
  • Still runs anything that was explicitly scheduled (a 3am cron job runs at 3am)
  • Still responds to direct chat messages (if you’re up at 2am talking to it, it’s up too)

Why those defaults? Because most SMB owners DON’T want push notifications at 3am, but they DO want the flexibility to chat whenever they want.

From Settings → Agent → Working hours, you can set a custom window. Examples:

  • 7am–10pm — if you want quiet overnight
  • 6am–11pm Mon-Fri, closed weekends — if you want a real break
  • 24/7 — if you work weird hours and don’t want quiet periods at all

Your agent respects these settings for notifications and non-urgent tasks. It will never silently ignore a scheduled task — those always run on schedule regardless.

Outside working hours:

ActionBehavior
You send a chat messageAgent responds immediately — you’re clearly available
Incoming email arrivesAgent logs it silently, no notification
A cron job firesRuns on schedule
A background sub-agent finishes a taskResult is queued for delivery at the next working hour
An approval is neededQueued, not pushed
Something urgent happens (errors, failures)Still notified

If you connect your calendar, your agent reads your calendar events to understand your focus time. It won’t send you non-urgent updates during a meeting or a focus block. This is automatic — you don’t have to configure anything.

You can override this behavior by telling your agent explicitly: “Always notify me immediately, even in meetings” or “Never interrupt me before 10am, regardless of what’s on the calendar.”

Technically, your agent’s container runs with TZ=<your_timezone> set as an environment variable. That means:

  • date commands return your local time
  • Cron expressions are interpreted in your local time
  • Log timestamps are your local time
  • The agent never has to do UTC conversion math

This makes scheduled tasks way more intuitive. When you say “every morning at 7am,” you mean 7am your time, and that’s exactly when it fires.