For builders

Bring your own stack. Drive it by voice.

You've built agents, workflows and scripts that do real work. Snag gives them a voice front end: something you can talk to with the phone in your pocket, on your AirPods, and on the car screen.

Point Snag at your agents, your n8n and Zapier workflows, a commands file in your Git repo and your own models. Then ask, send jobs, run commands and approve what's waiting, all hands-free, with rules you set for every action.

Snag's Control tab: an Ask an agent bar, then three agents. Coach, marked Private; Sysadmin, asks, jobs and approvals, marked Everyday; and PA, marked Personal. Ask Snag goes to Coach, and Add an agent.
Your agents, each with a privacy level.

Deploy staging from the M4

Here's a Tuesday. You're on the M4, the release is ready, and staging needs a deploy before the client call at ten.

  1. You Sysadmin, deploy staging.
  2. Snag Sysadmin wants to deploy release 4.2 to staging. That can't be undone. Code word?
  3. You Blue heron.
  4. Snag Approved. Sysadmin is on it.
  5. Snag Staging's deployed. Tests are green.

No phone in your hand, no laptop on the passenger seat. Sysadmin proposed the deploy as irreversible, and your rule for deploys said "code word in the car". Set it to "park it" instead and it waits for a screen, with nothing approved by silence.

Snag for CarPlay is built for the car: voice first, a short list behind it, approvals as a single alert, nothing to read while you drive. Out of the car, the same loop works through Siri and your AirPods with the phone in your pocket.

Snag Control Pro

Your own agents

Connect Hermes, an OpenClaw-style harness, or anything that speaks the Snag agent API, which follows the shape of A2A, the open Agent2Agent protocol. An agent describes itself once: its spoken name, what it can answer and do, the actions it proposes and how private its answers are. None of it is built into Snag.

  • Ask: "Coach, how did my run go?" The full answer on screen; 8 to 25 words out loud, after "Say it out loud?" for a Private agent.
  • Dispatch: "Sysadmin, look into the build server, notes for tomorrow." Five words back, "Sent.", and a digest in the morning: the short version, what was checked, and a next step with its own approval.
  • Status: In flight shows live steps from the agent, if it sends them, and where you asked from.
  • Approve or park: the agent proposes Routine, Needs a confirm or Irreversible for each action type. You tighten or loosen it per agent, or block it from Snag altogether.
Snag's In flight view: Sysadmin, look into the GitLab runner, notes for tomorrow. Steps: found the runner, read the last 50 job logs, checking its registration, notes to come. Started 18:42, from the car.
A job asked for from the car, running.

Rules per agent, per action

"Sysadmin restarts: by voice. Sysadmin deletes: code word or screen. Sysadmin spends money: not through Snag." On the phone, irreversible actions show exactly what will happen, then ask for Face ID. In the car, you pick from a spoken code word, passenger mode or parking it. New action types an agent adds later start as "park it" until you say otherwise.

Sysadmin's approval rules in Snag. Restart a service: routine, by voice in the car, one tap on the phone. Post to other people: confirm. Delete: irreversible, code word, passenger or park in the car, Face ID on the phone. Deploy: irreversible, park for a screen in the car.
The agent proposes; you decide.

Commands: a phrase, an action, a reply

A command is something you say that isn't for an agent. Give it a phrase with slots, pick what it does, and Snag says the answer back.

  • A webhook

    An n8n, Zapier or Make workflow, or any web address. Calls are signed with Standard Webhooks once the command has a signing secret. Commands added in the app get one straight away.

  • A Shortcut

    Run one of your Shortcuts on the phone, with the slots filled in.

  • An agent

    Turn a phrase into an ask or a dispatch to one of your agents.

  • A destination

    Fill in a template and send it to Todoist, Obsidian or any of the sixteen.

n8n in four steps

Paste your Webhook node's URL, or scan the QR code n8n shows. Copy Snag's signing secret into n8n once, so the workflow can tell it's really Snag. Send a test, then name the phrase. Say "log 42 miles" and Snag sends:

POST /webhook/miles HTTP/1.1
Host: n8n.example.net
Content-Type: application/json
webhook-id: msg_2Nf8xQe7
webhook-timestamp: 1792138129
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=

{"miles": 42}

Your workflow answers with a line to say, and Snag says it:

{"say": "Logged 42 miles."}

Zapier's Catch Hook works the same way. Zapier replies before the Zap runs, so Snag says "Sent." unless a later step calls back with something to say.

Snag testing an n8n workflow: sent miles 42, n8n replied in 0.4 seconds with say Logged 42 miles, marked Worked. Snag will say Logged 42 miles.
Test it before you say it.

Commands in your Git repo

Keep your commands in .snag/commands.yaml, next to the workflows they call, reviewed like any other change. Link the repo from the phone: GitHub with a short device code, GitLab by signing in to gitlab.com or your own server. Snag reads that one file and writes nothing back.

It checks for changes when Snag opens. Edits that call addresses you've already accepted just work. Anything that calls a new web address waits for one tap, and until then the old version keeps working.

Snag's Changes to your commands sheet for you/snag-commands on main: a new command, weigh in kilos, calling hooks.zapier.com, and a changed one, log miles miles, which now calls a new address. Accept 2 changes or Not now.
A new address always waits for you.
# .snag/commands.yaml
snag: 1
commands:
  - id: miles
    triggers: ["log {miles} miles"]
    action:
      type: webhook
      url: https://n8n.example.net/webhook/miles
      secret_ref: n8n.miles
    response:
      path: spoken
      fallback: Logged {miles} miles.

  - id: focus
    triggers: ["focus for {minutes} minutes"]
    action: {type: webhook, url: "https://hooks.zapier.com/hooks/catch/1234567/abcdef/", mode: async}
    response:
      fallback: Focus on for {minutes} minutes.

  - id: deploy
    triggers: ["sysadmin, deploy {env}"]
    action:
      type: agent
      agent: sysadmin
      verb: dispatch
      template: Deploy the latest release to {env}
    approval_class: consequential

Your own models, your own backend

By default your Snag account runs commands and agent calls, and there's nothing to set up. Flip Use my own infrastructure under Settings, Advanced, and you can:

  • point smart captures at your own OpenAI-compatible inference: a model on your own box, or a provider you already pay;
  • call your agents and webhooks directly, without going through your Snag account;
  • send captures to your own backend instead of the Snag account.

What stays private

  • Your answers. Every agent has a level. Everyday answers can be spoken anywhere. Personal ones are spoken on headphones; on a speaker or in the car, Snag asks "Say it out loud?" first. Private ones show on screen, and are only spoken after that same question.
  • Your repo. Snag reads one file, read only, from the repos you tick. GitHub's device code means Snag never sees your password.
  • Your workflows. With a signing secret set, every call is signed, so your workflow can turn away anything that isn't from Snag. Keep the webhook address private: anyone with it can start the workflow.
  • Your money. Block an action type, like spending, and Snag can't approve it at all.
  • Your captures. With your own backend, Nextcloud or Obsidian, captures go to your server or your vault. The privacy notice covers the rest.
Coach's page in Snag: say Coach, what's the latest? It can answer questions, read or spoken. Privacy set to Private: answers show on screen, and on a speaker or in the car Snag asks Say it out loud? first. A switch for Tell me when a job finishes, and an Ask Coach button.
An agent's page: what to say, and how private it is.

What it costs

Capturing to your own backends is free. Webhooks, Nextcloud, Obsidian, your own backend: no charge, on Free.

Snag Control is Pro, on every backend. Agents, approvals and commands are in Pro whether they run through your Snag account or your own infrastructure. That's £6.99 a month or £59.99 a year, with two weeks free to try it.

Compare Free and Pro

The Webhook connection in Snag, step 1 of 3: each capture is posted as JSON to your URL, n8n, Make, Zapier or your own server. A Continue button.
Captures to your own webhook: free.