Activities
56 activities ship. Five languages. One signature.
Activities are the building blocks workflows call into — HTTP requests, database queries, email sends, Slack messages, OCR runs, signature collection. Deklarative ships 56 activities in the standard library, each with implementations in TypeScript, Kotlin, Go, Rust, and Python where it makes sense.
Custom activities take ~30 lines: a function with a typed input, a typed output, and a registration call. The workflow engine handles retries, timeouts, idempotency, and observability for free.
Plus integrations with Stripe, Twilio, SendGrid, Mailgun, AWS S3, Google Drive, OneDrive, Salesforce, HubSpot, Jira, Linear, GitHub, GitLab, Auth0, Okta, Active Directory, and more via the standard HTTP and OAuth2 activities.
Bring your own activity
Custom in 30 lines.
// activities/refund-stripe.ts
import { defineActivity } from '@deklarative/workflow';
import Stripe from 'stripe';
export const refundStripe = defineActivity({
name: 'refund.stripe',
input: z.object({ chargeId: z.string(), amount: z.number().optional() }),
output: z.object({ refundId: z.string() }),
retry: { maxAttempts: 3, backoff: 'exponential' },
idempotencyKeyFrom: (i) => i.chargeId,
async handler(input, ctx) {
const stripe = new Stripe(ctx.secrets.STRIPE_SECRET_KEY);
const refund = await stripe.refunds.create({
charge: input.chargeId,
amount: input.amount,
}, { idempotencyKey: ctx.idempotencyKey });
return { refundId: refund.id };
},
}); Same pattern in Kotlin, Go, Rust, Python. Once registered, the activity is callable from any BPMN process or CMMN case in your project.
Get started
Describe the system. Ship the system.
Open source under Apache 2.0. Cloud free for evaluation. Production deployments self-hosted or hosted, your call.