shiftlabs Start free

Security model

How we protect your workspace and your secrets, and what code running here is allowed to do.

Women's Army Corps operators in headsets work a long switchboard side by side, on the afternoon shift.
WAC operators on the afternoon shift, Potsdam, 1945

Accounts and access

Who can sign in, how long a session lasts, and what an API key can reach.

Members · ridgeline-ops

3
MemberRoleSign-in
dana@ridgeline.exampleadminMFA · TOTP
li@ridgeline.exampledeveloperMFA · TOTP
sam@ridgeline.exampleviewerMFA · TOTP

Removing a member revokes their sessions.

Operators on shift, from “Operator Toll Dialing: Teamwork”, about 1949

Webhooks

A trigger URL starts a run. Deliveries must pass signature checks, rate limits and a size cap.

Deliveries to hooks.shiftlabs.org/t/kQ7v…

signed: stripe
21:41:09.698202{"runId":"316d72be"}
21:39:52.114401{"error":"invalid signature"}
21:30:14.227202{"runId":"7d10ce5b"}
21:30:16.502replay{"duplicate":true}

Replayed deliveries are dropped. Deliveries without a valid signature are not queued.

Secrets and connections

Secrets are write-only. No endpoint returns a value. Your code can send a secret to another service only through a connection. Admins manage connections and set the exact hosts each one applies to.

Audit log · ridgeline-ops

admins only
Time (UTC)ActionSubjectHostDetail
21:41:10.470injectstripeapi.stripe.com["STRIPE_KEY"]
21:36:02.881blockedbillingapi.stripe.comconnection billing is not declared for workflow refund-check
21:30:15.303injectstripeapi.stripe.com["STRIPE_KEY"]
21:05:40.112connection putstripe
21:05:12.640secret putSTRIPE_KEYversion 2

Outbound requests

All outbound traffic from your code goes through our egress gateway as fetch requests. Raw TCP is blocked at deploy.

Outbound requests · last hour

5
RequestStatusTime
GET api.stripe.comvia connection stripe200182 ms
POST hooks.slack.comno connection20095 ms
GET 203.0.113.7no connectionblockedrequests to IP addresses are not allowed; use a hostname2 ms
GET api.stripe.com:8443no connectionblockedport 8443 is not allowed; use 80 or 4432 ms
POST hooks.shiftlabs.orgno connectionblockedrequests to shiftlabs.org are not allowed from workflows2 ms
Call records clipped in sheaves along the top of the Fort Richardson switchboard in 1950, operators connecting calls below.
Fort Richardson switchboard, 1950

Limits

Workspaces start on these free-tier limits. We can raise them, up to platform ceilings.

Usage · last 24 hours

Runs
630 of 1,000
Outbound requests
1,236 of 3,000
Concurrent runs
4 of 10
Workflows
4 of 10
Free-tier limits
LimitFreeWhen you reach it
Runs per 24 hours · concurrent active runs1,000 · 10The webhook returns 429.
Workflows · active triggers · secrets · connections10 · 20 · 25 · 10Creating another returns 403.
Engine dispatches per run · run lifetime50 · 168 hThe run fails.
CPU · subrequests per invocation2,000 ms · 50The invocation fails.
Outbound requests3,000 per 24 h · 30/min per hostThe gateway returns 429.
Deploys · new versions per 24 hours20/min · 100The API returns 429.
Webhook body · workflow source · API JSON body256 KiB · 512 KiB · 16 KiBThe request is rejected with 413.
Logs per invocation500 lines · 4,000 chars/lineFurther lines are not stored. Longer lines are truncated.

Abuse

Report abuse to abuse@shiftlabs.org with the X-Shiftlabs-Tenant value from the request.

Reporting a vulnerability

If you find a security problem in shiftlabs, email security@shiftlabs.org. These are the rules for looking for one.

Platform

Where runs execute, and how this site and the API are served.