Snag help

Bring your own

Snag works with your own models, transcription, agents and capture backends. Nothing here is required: on a fresh install everything runs on this iPhone or through your Snag account.

BringWherePlan
Your own speech to wordsSettings > AI and speechFree
Your own model for actions from a captureSettings > AI and speechFree
Your own model for Snag ControlSettings > AI and speechPro
Your own agentsControl tab, add an agent; or Settings > AdvancedPro (all of Snag Control is Pro)
Your own capture backends: webhook, Nextcloud, ObsidianSettings > ConnectionsFree

See Plans for everything that differs between Free and Pro.

AI and speech

Open Settings > AI and speech (also in Settings > Advanced). The screen says: "Choose where each job happens. On this iPhone is the default, and nothing leaves the phone."

Each job has its own choice:

JobOn this iPhoneYour ownSnag account
Turning speech into words"Apple's speech recognition. Apple's servers only for a language you said yes to."Your own service: a Whisper-compatible service. The recording goes from this iPhone to itNot in this version
Actions from a capture"Snag finds the to-dos itself."Your own model: an OpenAI-compatible model or your Anthropic key finds themNot in this version
Snag Control (Pro)"Apple Intelligence, where this iPhone has it."Your own model, for a name heard mid-sentenceNot in this version

Snag account is shown but cannot be picked in this version.

On Free, the Snag Control choice is locked and shows "Snag Control is a Pro feature. See Pro". On Pro, Use it for a name heard mid-sentence turns the Control model on; off, Snag asks which agent was meant.

Add a connection

A connection is one endpoint and its key. Enter a key once and use the connection for any of the jobs.

  1. In Settings > AI and speech, under Your connections, tap Add a connection.
  2. Pick the kind: OpenAI-compatible (OpenAI, Groq, Ollama, LiteLLM, a Whisper server) or Anthropic (your own API key).
  3. Fill in the fields:
    FieldOpenAI-compatibleAnthropic
    NameOptional ("My server"). Default: the address's hostOptional. Default: "Anthropic"
    AddressRequired, e.g. https://api.example.com/v1Not asked
    KeyOptional ("Key, if it needs one")Required
    Chat modelFor actions and Snag ControlRequired
    Transcription modelOptional. Default whisper-1Not asked: Anthropic is text only
  4. Tap Test, then Save.
  5. Back on AI and speech, pick Your own service or Your own model for each job. With several connections, choose one under Using.

Anthropic connections serve actions and Snag Control only: "Text only: actions and Snag Control. For speech, add an OpenAI-compatible connection."

To remove one, open it and tap Remove this connection. Any job using it goes back to this iPhone.

The address rule

  • https works for any address.
  • Plain http works only for an address on your own network typed as one: a 10, 172.16 to 172.31, 192.168, 169.254 or 127 address, a private IPv6 address, a .local name or localhost. The connection then shows "Not encrypted, so only use on a network you trust."
  • Any other http address is refused: "Use an https address. Plain http only works on your own network."
  • Snag never looks up a name to decide. A server on your network reached by a plain name needs https, its address or its .local name.

Test

Test asks the endpoint for its model list, which costs nothing.

ShownMeaning
"It answered. This connection works."Ready
"It said no to the key. Check it and try again."401 or 403
"It answered with an error (404)."Another status
"No answer from that address."Nothing reachable there

When your own endpoint does not answer

Snag never loses a capture to your endpoint:

  • Speech: the live transcript still runs on the phone. When the capture ends, the recording goes to your service and its words replace the live ones. If it fails, the live words stay and the capture shows one quiet line: "Your transcription service didn't answer, so the words are from this iPhone."
  • Actions: if your model fails, or its answer is not in the expected shape or quotes words that are not in the capture, Snag finds the actions on the phone and shows: "Your model didn't answer, so actions were found on this iPhone."
  • A choice that can't be used now (no address, no model, no key for Anthropic, a removed connection) runs on this iPhone, and the screen says so under the choice: "That connection isn't ready (an address, model or key is missing), so this runs on this iPhone for now."

Free's 30 smart captures a month count whichever model finds the actions.

Keys and privacy

  • Keys are stored in this iPhone's Keychain, are not synced, and are sent only to the connection's own address.
  • With your own connection, the recording or words go from this iPhone straight to the address you entered, under that service's terms. Snag does not receive them.

What exactly is sent: OpenAI-compatible and Anthropic endpoints.

Your own agents

Snag Control drives agents you run. Snag hardcodes none: each agent describes itself (its name, what it can do, how private its answers are) once connected. See Snag Control.

BackendAskJobsApprovalsSet up
Snag agent APIYesYesYes, all classesControl tab, add an agent > Add an agent server
OpenAI-compatible serverYesOptionalNoSettings > Advanced > Use my own infrastructure > Direct endpoints
Nextcloud Talk roomYesYesRoutine, in rooms that carry proposalsControl tab, add an agent > Nextcloud Talk
An A2A agentShown as "Not in this version"

Agents can also be declared in a repo's .snag/agents.yaml. Every address is shown before it is accepted. See Commands in a repo.

Reference: Snag agent API, Nextcloud Talk agents, OpenAI-compatible endpoints.

Use my own infrastructure

Settings > Advanced > Use my own infrastructure ("For people who run their own servers.") opens:

ItemWhat it does
Direct endpointsAgents and endpoints as JSON (talk_rooms, openai_agents, agent_apis, overrides, user), and Keys saved by name in the Keychain
AI and speechThe same screen as above
snag-bridgeA relay address. Marked "Not used in this version": Snag keeps the address and does not use it
ntfyA topic your server posts to when something's waiting. Snag checks it each time it opens
Try itType what you would say and see what Snag does, on the phone or as in the car

Your own capture backends

Captures can go to your own server or vault instead of, or as well as, your Snag account. All of these are free. On Free, captures go to your Snag account and one connection; on Pro, to every connection.

BackendWhat it getsDetails
WebhookEach capture as JSON: text, actions and task fields, no audio or filesWebhooks
NextcloudThe recording and a markdown transcript in a folder; tasks in Nextcloud TasksDestinations
ObsidianMarkdown in your vault: today's daily note or a new note each timeDestinations

Add one in Settings > Connections > Add a connection.

Voice commands to your own workflows

Voice commands send what you say to n8n, Zapier, Make or any URL, signed with Standard Webhooks, and speak the reply. They are part of Snag Control (Pro). See Voice commands, Webhooks and Commands in a repo.

Next: Plans