Skip to main content

Notifications

The anycloud API container can post a once-a-day summary of yesterday's deployments — total spend, count by terminal state, preemption rate, median runtime, active users — to a destination of your choosing. The digest reads from your local ~/.anycloud/api.db and POSTs the message directly from your machine to the webhook you configure.

Channels

slack is the only channel supported today. The design is namespaced so additional channels (Discord, email, webhook-generic, ...) can be added without changing the CLI surface.

Slack

  1. Create an incoming webhook on the workspace and channel you want the digest posted to.

  2. Enable it:

    anycloud notifications enable slack --webhook https://hooks.slack.com/services/T…/B…/x…

    The CLI validates the URL and posts a one-shot test message before saving — a typo'd webhook fails loudly here instead of silently swallowing every future digest.

  3. The API container's notifications-digest monitor checks every 15 minutes; once per UTC day, after midnight, if any deployments completed in the prior 24 hours it builds the summary and POSTs it. If no deployments completed yesterday, nothing is sent. The first tick after enabling notifications on a fresh host doesn't post — it marks today as the starting point so your first digest covers a full UTC day.

Other commands:

anycloud notifications status         # show configured channels
anycloud notifications test slack # re-post the test message
anycloud notifications disable slack # remove the channel

Storage

Configuration lives at ~/.anycloud/notifications.json (mode 0600). A sibling sentinel file ~/.anycloud/notifications-digest-last-posted records the most recent date for which a digest was sent, so a restart of the API container inside the post window doesn't double-post.

Sample output

*anycloud usage on 2026-05-19 (UTC)*
Spend: $4.25
Deployments: 6 (completed 2, failed 1, errored 1, terminated 1, invalid 1)
Active users: 2
Preempted: 2 (33%)
Median runtime: 3m