Achieve operational harmony with
business automation that's vibe-codable.

workflows/example.ts
import { t, workflow } from "opkitty"
import { gmail, cursor, slack } from "opkitty/components"

export default workflow("Triage customer tickets", () => {
  const email = gmail.onNewEmail({
    account: "support",
    label: "customer",
  })

  const triage = cursor.runCloudAgent({
    prompt: t`Triage this ticket: ${email.body}`,
    target: "support-triage",
  })

  slack.sendMessage({
    channel: "#support",
    text: t`Ticket: ${triage.summary}`,
  })
})

Primed for
vibe-coding

Your automations are just TypeScript, so you can build them with your favorite LLMs and upload them to GitHub.

Fast by default

Steps run when their inputs are ready. Parallelism emerges naturally. No extra orchestration work.

Durable and long-running

Run workflows for seconds, hours, or days with state preserved, so every step can pick up exactly where it left off.