Skip to content

Automation that keeps up.

GoRunner connects the tools your team already uses, builds the flow when you describe it, and runs it in milliseconds on an engine written in Go. Self-host it, or let us run it for you.

Talk to the founder
support-inbox-triageSavedRunning · 3 donePublish changes
Slack · Send Message
ConnectionSlack, acme workspace
Channel#support
MessageNew {{category}} from {{email.from}}, case {{case.number}} opened, draft reply attached.
Test stepok · 12ms

The actual builder, mid-run. Click a step, or test it. Sample data.

600+

pieces in the catalog, triggers and actions included

0

cold starts: one compiled Go engine, no queue between steps

1

command to self-host, air-gapped installs documented

100%

of runs logged step by step: inputs, outputs, timing

02 / 08 · build

Describe it.
It builds itself.

Tell Keel, GoRunner's assistant, what should happen. It picks the pieces, wires the flow, tests it against real data, and hands you a draft to review.

  • An autonomy dial, Ask to Full, sets how much lands without you.
  • Every change is a reviewable card with a worded diff. Production never moves silently.
  • Flows can self-heal: three matching failures open a maintenance chat with the fix proposed.
More about Keel
KeelDraft

Searching the piece catalog: 4 pieces picked
Wiring the flow: trigger, classify, case, alert
Testing against a sample payload
Create workflowsupport-inbox-triage
GmailGoRunner AISalesforceSlack
base · draft v1PreviewDiscardApply
test run 412ms

03 / 08 · connect

600+ pieces, already wired

Apps, databases, queues, and AI models. Every piece ships with triggers and actions that work the first time, and new ones land every week.

Browse the directory
SlackSalesforceGmailStripeHubSpotNotionPostgreSQLGitHubZendeskOpenAIGoogle SheetsShopifyIntercomAirtable
ClaudeJiraLinearMongoDBTwilioDiscordSnowflakeMailchimpCalendlyTypeformPayPalKubernetesDatadogAsana
Microsoft TeamsOutlookBigQueryApache KafkaRedisSupabaseCloudflareFigmaTrelloQuickBooksGoogle GeminiElevenLabsWebflowOkta

04 / 08 · run

Built in Go. Felt in milliseconds.

Most automation tools were built for convenience, then asked to scale. GoRunner started at the other end: a compiled execution engine, free of cold starts, that schedules every step in microseconds and charges for runs, not for tasks.

A broker hop between every step: serialize, enqueue, poll, wake.
Steps are function calls inside one process. No broker between them.
Workers are heavyweight processes; concurrency costs RAM.
A run is a goroutine. Sixteen in flight in ~90 MB.
Per-task pricing punishes long flows.
One run is one price, however many steps it takes.

Same traffic. Same box. Three engines.

Illustrative simulation, slowed 3× so the eye can follow; the counters are true rates. Each engine gets an identical box, and the worker counts are what its memory affords: a GoRunner run is a goroutine inside one ~90 MB process, while broker tools run whole worker processes at hundreds of MB each. The other half of the gap is the broker round-trip every step pays, whatever the worker count. Relative capacities from internal testing; public benchmarks ship with the methodology.

06 / 08 · observe

Every run, on the record

Each execution is logged step by step: inputs, outputs, timing, retries. Replay any run against the current flow, set alerts on failures, and debug with the actual payload instead of a guess. When one fails, hand it to Keel: the fix arrives as a reviewable draft.

This page is keeping a log of your visit the same way. The receipt is waiting at the bottom.

Explore runs and observability
app.gorunner.io / runs
sample data
  • New email receivedgmail0.02s
  • Classify and draftgorunner-ai0.31s
  • Route by intentbranchtook path A: billing0.00s
  • Create casesalesforceREQUIRED_FIELD_MISSING: Priority (fixed in draft v15)0.69s
  • Alert #supportslack
This run failed on step 4. The latest version fixes the mapping.

A real log to poke at. Open the failed run, then replay it.

07 / 08 · deploy

Your cloud or ours

GoRunner Cloud runs your flows with zero upkeep. Or take the same engine onto your own infrastructure: your network, your data residency. Switching later is a config change, not a migration.

$ docker compose --profile app up -d

gorunner-api ready :3002

gorunner-worker ready piece catalog published

gorunner-web ready :80

$

gorunner cloudself-hosted

Your infra, your rules

Two lean services, the API and the worker, plus Postgres, Redis, and an S3-compatible store. That is the whole footprint. Air-gapped installs are documented, not discouraged.

  • SSO, SCIM provisioning, and a full audit log
  • Bring your own LLM keys, with org-level token budgets
  • Human approval steps, N-of-M, with expiry paths
  • Every credential sealed under a key only you hold

08 / 08 · done

Run complete.

You just executed this page, step by step. GoRunner gives every flow the same treatment. The next run should be yours.

run log · gorunner.io/homethis visit, measured live
  • triggeryou arrived· · ·
  • builda flow built itself· · ·
  • connect600+ pieces, wired· · ·
  • run0.9s for 1,000 steps· · ·
  • workbusywork, handled· · ·
  • observeevery step, logged· · ·
  • deployour cloud or yours· · ·
  • doneyou, reading this line· · ·
8 steps · 0 failures · duration still running (your scroll, not ours)

Every flow you run gets a log like this. Yours will be faster.

Free plan · 1,000 runs a month · self-host or cloud