Skip to content

CLI Config-as-Code

Use the CLI with a TypeScript config file to manage relays, schedules, and relay rules idempotently.

import type { OncallConfig } from "@beepsdev/sdk";
const config = {
version: 1,
relays: [
{
externalKey: "myco::relay::primary",
name: "Primary",
description: "Primary rotation",
},
],
schedules: [
{
externalKey: "myco::schedule::primary-weekly",
relayExternalKey: "myco::relay::primary",
name: "Primary Schedule",
type: "weekly",
startDay: "monday",
startTime: "00:00",
members: [{ email: "dev1@myco.com" }, { email: "dev2@myco.com" }],
},
],
relayRules: [
{
externalKey: "myco::rule::primary-notify",
relayExternalKey: "myco::relay::primary",
group: "default",
order: 1,
name: "Notify Primary",
ruleType: "schedule_notify",
enabled: true,
config: {
scheduleExternalKey: "myco::schedule::primary-weekly",
},
},
],
} satisfies OncallConfig;
export default config;
Terminal window
beeps config lint -f beeps.config.ts
beeps relay plan -f beeps.config.ts

For CI:

Terminal window
beeps config lint -f beeps.config.ts --json
beeps relay plan -f beeps.config.ts --json
Terminal window
beeps relay apply -f beeps.config.ts

To remove relay rules that are not in the config:

Terminal window
beeps relay apply -f beeps.config.ts --prune
Terminal window
beeps relay export -o beeps.config.ts
Terminal window
export BEEPS_API_KEY="bk_your_key_here"
export BEEPS_BASE_URL="https://api.beeps.dev/v0"
{
"apiKey": "bk_your_key_here",
"baseUrl": "https://api.beeps.dev/v0"
}
Terminal window
beeps relay plan --config ./beeps.cli.json
export ONCALL_CLI_CONFIG="./beeps.cli.json"