Wake up to triaged issues, test results, or a dependency update. Run an agent once or on repeat, or have a script run first before an agent.
Ask me about each of these, one at a time, with a suggested default: - Job (what each run does; a script can check first and start an agent only when there's work) - When (e.g. weekdays at 9am, with your timezone) - Results (one thread for reports, or a new worktree each run for code changes) - Notifications (yes or no) Skip any I've answered. Then sum up the plan in three bullets and wait for my go. My answers override the steps below. If a wait times out, wait again, up to three times. Set up a bb automation for this project and test it once. Guide: https://getbb.app/guides/run-an-agent-on-a-schedule Default Job: morning issue triage on weekdays at 9am, with reports in one thread. Ask for my timezone. Pass --project $BB_PROJECT_ID to every bb automation command. If a step fails, stop and tell me the error. 1. Read `bb automation create --help`. Turn on the Automations plugin if `bb plugin list` shows it's off. For an agent job, pick a model from `bb provider models <provider> --json`. 2. If `bb automation list` already has this job, reuse it and skip to step 4. 3. Create it paused: `bb automation create --name '<name>' --disabled` with `--cron '<expression>' --timezone <IANA zone>` or `--at <ISO time>`, plus either: - Agent: `--prompt '<prompt>' --provider <provider> --model <model> --permission-mode auto`. For reports in one thread, start that thread with `bb thread spawn` and add `--target-thread <its ID>`. For code changes, add `--new-environment worktree` and tell it not to push. - Script: `--script-file <path>`. It starts an agent with `"$BB_CLI" thread spawn` only when there's work, and prints nothing otherwise. 4. Test it with `bb automation run <id>`, then read the run's thread or output. If it doesn't do the job, leave it paused and tell me why. 5. Turn it on with `bb automation resume <id>`, asking me first for a one-time job. If Notifications is yes, send `bb push-notifications test web` and ask me to confirm it arrived. Reply with the automation ID, schedule, next run, and what the test produced.
Every scheduled job lives in one list, with its next run and an on/off switch.
Describe what to do, when, and where the results go. Your agent sets it up.
Does the job need a site you're signed in to, like Linear or your analytics? Import your browser logins into bb first.
Ask for a script instead, like “every 15 minutes, check main for a failed CI run, and if there is one, start a Codex thread to fix it.” Scripts run without a model, so frequent checks use none of your plan. Quiet runs show as skipped.
Ask for a single run, like “tomorrow at 9am, draft release notes from this week's pull requests.” It shows as One time in Automations.
Type the message, open the arrow next to the send button, and choose Send later… to pick when it goes to this thread.
You don't have to wait until morning to find out whether it works.
Open the report from a notification, or come back to the thread later.
That's the default. Ask your agent to post every run to one thread, like “send the morning triage to this thread.” Keep that thread for reports only.
A script that exits without printing anything counts as skipped. Have it print a short result when there's something to report. A script that exits with an error or times out shows as failed; open the run to read its output.
An agent automation sends a prompt to the agent and model you pick, and uses your plan each run. A script runs on the bb server with no model, so it's free to run often, and it can start agent threads when it finds work.
Claude Code, Codex, and Pi are built in. Cursor, opencode, and other agents that support the Agent Client Protocol, like Grok Build and Hermes Agent, work once they're installed.
Open it in Automations. Choose Edit prompt for an agent automation, or Edit with chat for a script. To change the schedule, ask your agent, like “move the morning triage to 8am.”
Yes. Ask for a new worktree on every run, so each run gets its own branch, and say in the prompt whether it should push, open a pull request, or leave the change for you.
Free and open source. Use the agents and machines you already have.