Skip to content

Providers

Which accounts Periskopos can connect, the key each one needs, and what it watches with it. Paste a key on the Accounts page, or put it in the keys file under the name shown. Periskopos only reads with a key unless you switch on Allow actions for that account (some providers’ tokens can’t be made read-only; each section says so).

The Accounts page: each connected account, whether its key works, its status page and the apps using it. The Accounts page: each connected account, whether its key works, its status page and the apps using it.
Connected accounts, each tested and used by your apps.

CLOUDFLARE_API_TOKEN, or paste it on the Accounts page, whose setup lists the permissions: Account: Account Settings, Workers Scripts, Workers Builds Configuration, Cloudflare Pages, Account Analytics; Zone: Zone, Zone Settings, DNS, Analytics, SSL and Certificates, Bot Management, Email Routing Rules, Zone Security Center Insights; all Read, plus Cache Purge to allow purging. For Workers runtime errors, also Account: Workers Observability: Edit (Cloudflare only accepts Edit for reading logs; Periskopos only reads). To allow redeploying Pages projects, Cloudflare Pages: Edit instead of Read. Under Resources, choose All accounts and All zones. What it watches is on its own page.

RENDER_API_KEY (Account settings → API keys).

VERCEL_TOKEN (Account Settings → Tokens), scoped to your account or to the team your projects are in. Each project shows its production deploys and whether your last push is live, and needs attention when a deploy fails or runs far longer than usual; Redeploy builds the live deploy again. Vercel tokens can’t be read-only, so Periskopos only reads unless you allow actions.

NETLIFY_AUTH_TOKEN (User settings → Applications → Personal access tokens). The same for a site’s production deploys; the published deploy is the live one, and a canceled build isn’t a failure. Redeploy starts a new production build.

FLY_API_TOKEN, from fly tokens create readonly personal. Read through the Machines API, which keeps no deploy history: an app shows the releases its Machines run, and needs attention when a Machine fails, a release rolls out far too long, or a running Machine fails its health checks. It can’t tell whether your last push is live (Fly doesn’t record the commit), and only your personal organization is listed.

RAILWAY_TOKEN (Account → Tokens, No workspace). Each service shows its deploys in its project’s production environment, with the commit each built; a failed or crashed deploy needs attention, and Redeploy deploys the live one again. Railway’s status page isn’t in the usual format, so it isn’t watched.

DIGITALOCEAN_TOKEN, a personal access token (API → Tokens) with Custom Scopes account: read and app: read, plus app: update to allow Redeploy. Each App Platform app shows its deploys and whether your last push is live, and needs attention when a deploy fails or runs far longer than usual, like Render. Its status page counts only App Platform, the API and Container Registry, in any region.

AWS_AMPLIFY_KEY, an IAM user’s access key pasted as ID:SECRET:REGION, allowed amplify:ListApps, ListBranches, ListJobs (and StartJob for Redeploy). Each branch’s builds, failed builds and Redeploy (for apps connected to a Git repository). One key watches one region.

Nothing, if the GitHub CLI is logged in (gh auth login). Otherwise GITHUB_TOKEN, a fine-grained token with Actions and Contents Read-only, plus Administration Read-only for the configuration checks (branch protection, Dependabot, workflow permissions).

Security alerts: connect an app’s repository a second time as Repository · security alerts (the same GitHub account; the token also needs Dependabot alerts and Secret scanning alerts, Read-only). Checked every 6 hours: the app needs attention for any leaked secret or any dependency alert rated high or critical; lower ones are only counted. A scanner that’s switched off for the repository says so.

GITLAB_TOKEN, a personal access token with read_api. Like GitHub: commits, CI pipelines, whether your last push is live, and the end of each failed job’s log. gitlab.com only.

SUPABASE_ACCESS_TOKEN (Account → Access Tokens). It can’t be limited to read-only, so Periskopos only calls read endpoints.

NEON_API_KEY. A project is down when its compute is turned off or stuck, an operation failed in the last day, a quota ran out, or its main branch is full. Scaled to zero is normal.

MONGODB_ATLAS_KEY, a service account (Organization Read Only) pasted as CLIENT_ID:CLIENT_SECRET; add this computer’s IP to its API access list. A cluster is down when paused or deleting, or when Atlas has an open alert for it.

SENTRY_AUTH_TOKEN (User Settings → Personal Tokens) with Read on Organization, Project and Issue & Event. An app connected to a Sentry project gets an Errors section on its Deploys tab: its unresolved issues, most frequent first, each marked when it started after the live deploy went out. The app needs attention (not down) when a new error takes off: an unresolved issue first seen in the last 24 hours with 10 events or more. AI assistants see the same list. EU organizations are read in their own region.

GOOGLE_SEARCH_CONSOLE_KEY, a Google Cloud service account’s JSON key: paste the whole file on the Accounts page (it’s saved as one line), then add the service account’s email as a Restricted user on each Search Console property. Periskopos asks Google only for the read-only Search Console scope. Each app on a property shows its clicks, impressions, position and top queries over 7 and 28 days, and needs attention when clicks fall by half or more week over week (from at least 50 clicks the week before).

GOOGLE_ANALYTICS_KEY, a service account’s JSON key (the Search Console one works) with the Analytics Data and Admin APIs on, added as a Viewer on each property. Visitors over 7 and 28 days; an alert when they fall by half or more week over week (from at least 50 visitors the week before).

One Payments panel on an app’s Overview, whichever provider fills it: revenue over 7 days (against the week before) and 30 days per currency, failed payments, and webhooks. The app needs attention (not down) when failed payments in a day reach 5 and three times the usual, when a webhook endpoint is disabled, or when 3 or more events in a day are still undelivered after an hour. Checked every 15 minutes; AI assistants see the same figures.

STRIPE_API_KEY, a restricted key with Read on Balance, Charges, Events and Webhook Endpoints. A test key shows as test mode. Revenue is successful charges less refunds; past 1,000 charges in 30 days it’s shown as a floor.

PADDLE_API_KEY with Read on Transactions, Subscriptions and Notifications; a sandbox key reads the sandbox. Adds past-due subscriptions. Failed payments are past-due transactions, and webhooks are notifications Paddle couldn’t deliver.

RESEND_API_KEY, a Full access key (API Keys → Create API Key): a Sending access key can’t read domains. Periskopos only calls read endpoints. Each app connected to its sending domain needs attention when the domain stops being verified (a DNS record broke or changed), before its emails stop arriving. Phone alerts by email use PERISKOPOS_RESEND_API_KEY, which can be the same key.

SENDGRID_API_KEY, restricted, with Read on Sender Authentication and Stats. A sending domain that stops being authenticated, or a week with over 5% bounces or 0.3% spam reports across the account, needs attention (judged from 100 emails a week). Accounts in SendGrid’s EU region aren’t supported yet.

CLERK_SECRET_KEY of the Production instance. Whether its Backend API answers, its users and this week’s sign-ups.

OPENAI_ADMIN_KEY, an admin key (only those can read costs). Spend this month per project or for the whole organization, and an alert past the monthly budget set when connecting it.

New providers are welcome: each is one file in the app. See CONTRIBUTING.md.