The cloud for Claude Code.
Deploy the workflows you build with Claude. They run on a schedule or a webhook, with your team's keys and a record of every run.
>compare our HubSpot pipeline with yesterday and post what moved to #revenue: new deals, stage changes, slipped close dates
Read open deals from HubSpot · compared with yesterday
Posted the summary to #revenue
>/teton run this every morning at 7
Wrote pipeline-changes.workflow.mjs
Bash(teton deploy pipeline-changes.workflow.mjs)
✓ v1 live · schedule armed · next run 07:00 ET
! needs SLACK_BOT_TOKEN → app.teton.so/integrations
? for shortcuts
Do it once in Claude. It runs from then on.
Your best work in Claude happens once, then the chat closes and tomorrow you do it again by hand. Teton runs that session headless, in the cloud, so it keeps going.
>compare our HubSpot pipeline with yesterday and post what moved to #revenue
Posted the summary to #revenue
>/teton every weekday at 7
Deployed · next run Mon 07:00
The same result every morning
The steps Claude worked out run the same way each time, on a schedule or when something happens.
It remembers yesterday
A Postgres database in every workspace, so a job can compare, skip what it already did and pick up where it stopped.
Change the rules without code
Your ICP, scoring rules and tone live in shared context files. Edit one and the next run follows it.
From a chat with Claude to a job that runs every morning.
Do the job once with Claude
Ask in plain language in Claude Code or Codex and get the output right by hand.
> post what moved in the pipeline to #revenueType /teton
Claude writes it up as one file: the trigger, the steps and the keys it needs. No repo to set up.
pipeline-changes.workflow.mjsDeploy it
One command makes it live. It runs in the cloud from then on, whether your computer is on or not.
✓ v1 live · next run 07:00 ETSee what it does, and every time it ran.
Teton reads the file and draws it: what starts it, every service it touches, where Claude steps in and what it remembers. Below it, every run with its result and cost.
| Status | Started | Duration | Cost |
|---|---|---|---|
| Running · comparing with yesterday | Now | — | — |
| Succeeded | Yesterday 07:00 | 14.2 s | $0.04 |
| Resumed at step 3 | Thu 07:00 | 21.7 s | $0.05 |
| Succeeded | Wed 07:00 | 13.8 s | $0.04 |
Every workspace comes with a Postgres database.
Somewhere for your jobs to keep what they learned yesterday. It's plain Postgres, so you, Claude and your BI tools can read it too.
select deal, stage, amount, close_date from pipeline_snapshots where day = current_date - 1;
| deal | stage | amount | close_date |
|---|---|---|---|
| Acme Corp · renewal | Negotiation | $52,000 | Nov 14 |
| Northwind · expansion | Proposal | $18,500 | Dec 02 |
| Globex · new logo | Discovery | $36,000 | Jan 20 |
| Initech · upsell | Closed won | $9,800 | Oct 24 |
| Umbrella · new logo | Proposal | $27,300 | Nov 30 |
Jobs remember between runs
Snapshots, what was already sent, where a job stopped. That is what makes “compare with yesterday” possible.
Ask Claude about it
Through the Teton connector, Claude can read the schema and query any table. “What moved last week?” is a question, not a dashboard.
Connect anything to it
Copy the connection string from the dashboard into Metabase, Hex or your own scripts.
One definition of win rate. Every chat and every workflow uses it.
Write down what your team means by win rate, ICP or a qualified lead once. Workflows read it on every run, and everyone on your team can use it from their own Claude.
# Win rate
Closed won ÷ (closed won + closed lost), counted by close date.
Leave out renewals and deals under $5k.
Report it by quarter unless someone asks otherwise.
>what was our win rate last quarter?
Teton · read win-rate.md (rev 4)
31%, closed won over won plus lost, renewals and deals under $5k left out.
Everyone means the same thing
The definition lives in one place, so a rep's chat, a manager's report and the 7am job all count the same way.
Change it without a deploy
Edit the file and the next run of every workflow that uses it follows the new rule.
See who changed what
Every edit is a revision you can roll back, and every run records which revision it read.
See everything it does. Undo anything it did.
See what it does
Teton reads the file and shows every service it calls and everything it writes.
Keys the code never sees
Keys are entered once in the dashboard, never in the chat or the file, and only reach the hosts a job declares.
HUBSPOT_ACCESS_TOKEN ••••••••only to api.hubapi.comSLACK_BOT_TOKEN ••••••••only to slack.comEvery change on the record
When a job writes to your CRM, each run lists exactly which records it changed.
Undo in one click
Every version is kept. If a change goes wrong, make the last good one live again.
The small jobs that quietly run the business.
- Post what moved in the pipeline to #revenuedaily 07:00
- When a form comes in, file it in Notion and ping the ownerwebhook
- Flag deals that have gone quiet and nudge the owner in Slackweekdays 09:00
- Draft the follow-up email for every sales callafter every Gong call
- Watch Hacker News for stories about your marketevery 3 hours
Do it once.
Teton does it every day after.
Take the thing you did in Claude this week and make it permanent.