Integrations
Connect the registries, identity and systems your deploys touch
Native connectors for the tools most platform teams already run, a typed SDK for the internal ones, and webhooks for everything in between.
60connectors across 6 categoriesEvery one scoped to least privilege and audited
Communication
10- SlackChannels, threads, in-line approvals
- Microsoft TeamsChannels and adaptive-card approvals
- GmailRead, draft, send on scoped grants
- OutlookRead, draft, send on scoped grants
- DiscordServers, channels, threads
- IntercomConversations and contact records
- TwilioSMS and voice, delivery receipts
- SendGridTransactional send and events
- WebhooksSigned delivery, replay on failure
- Email (SMTP)Any provider, credentials in vault
Work tracking
10- LinearIssues, cycles, projects
- JiraIssues, sprints, custom fields
- AsanaTasks and portfolios
- NotionDatabases and page content
- ClickUpSpaces, lists, custom statuses
- MondayBoards, items, column values
- TrelloBoards, cards, checklists
- HeightTasks and saved views
- ShortcutStories, epics, iterations
- AirtableBases, tables, linked records
Data & analytics
10- SnowflakeRead-only by default, scoped grants
- BigQueryRead-only by default, scoped grants
- PostgresDirect or through a read replica
- dbtModel metadata and lineage
- DatabricksUnity Catalog tables and volumes
- RedshiftClusters and serverless workgroups
- ClickHouseRead-only, per-database scopes
- MySQLDirect or through a read replica
- MongoDBCollections with field projection
- FivetranConnector status and sync history
Revenue & finance
10- SalesforceObjects, fields, workflow triggers
- HubSpotContacts, deals, notes
- StripeRead by default; writes always gated
- ZendeskTickets, macros, side conversations
- NetSuiteRecords and saved searches
- QuickBooksInvoices, bills, chart of accounts
- XeroContacts, invoices, bank feeds
- ChargebeeSubscriptions and entitlements
- PipedriveDeals, pipelines, activities
- FrontShared inboxes and comments
Engineering
10- GitHubRepos, PRs, checks, actions
- GitLabRepos, MRs, pipelines
- PagerDutyIncidents and on-call context
- SentryIssues, events, release health
- BitbucketRepos, PRs, pipelines
- DatadogMetrics, monitors, event stream
- GrafanaDashboards and alert rules
- OpsgenieAlerts and escalation policies
- CircleCIWorkflows, jobs, artifacts
- VercelDeployments and build logs
Identity & storage
10- Google DriveFiles and folders on scoped grants
- S3Buckets and prefixes, least privilege
- SharePointSites and document libraries
- BoxFiles and metadata
- OktaSSO, SCIM, group-mapped roles
- Entra IDSSO, SCIM, group-mapped roles
- WorkdayWorker records, read-only
- Google Cloud StorageBuckets and prefixes, scoped
- Azure BlobContainers and prefixes, scoped
- DropboxFiles, folders, shared links
Custom connectors
Anything else
If it has an HTTP API, it is a step. Declare the inputs and outputs once with a typed schema, and the builder handles sandboxing, caching, retries, credential scoping and attestation for it exactly as it does for a native step.
integrations/custom.ts
import { step } from "@girder/sdk";
export const publishImage = step({
name: "publish_image",
// Inputs are hashed; anything not declared here cannot be read.
inputs: {
artifact: artifactRef(),
registry: env("REGISTRY_HOST"),
},
outputs: { digest: z.string() },
// Pushes to a shared registry, so it never runs unapproved.
policy: { requiresApproval: true, environments: ["staging", "production"] },
async run({ artifact, registry }, ctx) {
const { digest } = await ctx.oci.push(artifact, registry);
await ctx.attest({ subject: digest, predicate: "publish" });
return { digest };
},
});Seal one service and see.
Run Girder beside your pipeline for a week and compare the artifact hashes. If they don't match, you have learned something worth knowing either way.
Free for 14 days · No card required