Create an AI profile
Open AI Profiles and connect the tool you use. Set a default so new prompts are ready to run.
Learn the core ideas, build reusable AI actions, and automate the work you repeat—without losing sight of what runs where.
Start here
The fastest way to learn Ottyr is the built-in Getting Started demo. Open Help, choose the Getting Started card, and click Start. It guides you through a real profile, prompt, run, and result.
Open AI Profiles and connect the tool you use. Set a default so new prompts are ready to run.
Open All Prompts or a project, name the prompt, and write the instructions you want sent.
Run the prompt. Its output appears in the prompt view and is saved to Run History.
Build up gradually. Once the basic loop works, add variables, snippets, file input, automation, and chaining as you need them.
The mental model
Every run follows the same path. You define the work, Ottyr resolves the context, your chosen AI does the thinking, and Ottyr keeps the result.
Runs can begin with a click, a file drop, pasted clipboard text, a folder event, or another prompt. For multi-step work, chain prompts so each result becomes the next prompt’s input.
Orientation
The main window organizes setup and review. Two always-on surfaces—the Command Bar and Prompt Sidebar—make your prompts available from anywhere on your Mac.
Overview of projects and recent activity.
Every saved prompt, across every project.
Groups of related prompts for a client, product, or workflow.
Folder automations that run prompts when files change.
Reusable blocks of text for any prompt.
The CLI tools and APIs Ottyr can run through.
A searchable record of runs, results, and artifacts.
This guide inside Ottyr, plus guided demos.
The building block
A prompt is a saved job: a clear set of instructions plus the profile, files, and output behavior needed to run it consistently.
Open a prompt and click Run.
Search for it and press Return.
Drop in a file or use Paste and Run.
Run automatically when a matching file changes.
Pass work forward with prompt chaining.
State the goal, audience, source material, and output format. Use variables for changing values, snippets for reusable guidance, and test manually before adding triggers or chains.
Stay organized
Projects group related prompts—one per client, product, or workflow is a useful starting point. Create projects from the sidebar; the Dashboard keeps the cross-project view.
Reports/{{VAR:project-name}}/{{VAR:date}}.mdChoose the runtime
An AI profile tells Ottyr how to execute a prompt. Keeping provider setup separate from prompt content means the same prompt can run through different tools.
A profile stores the provider, model, optional system prompt, and provider-specific settings such as executable path, working directory, API URL, API key, sessions, and extra flags.
| Provider | Type | Executable | Notes |
|---|---|---|---|
| Claude CLI | CLI | claude | Optional model, working directory, system prompt, and flags. |
| OpenAI Codex CLI | CLI | codex | Local Codex workflows. |
| Gemini CLI | CLI | gemini | Use your installed Gemini command-line tool. |
| OpenCode CLI | CLI | opencode | Use your installed OpenCode command-line tool. |
| OpenAI-compatible API | API | — | Set the model, API key, base URL, and response options. |
Prompts without a fixed profile fall back to it.
Triggers and chains cannot pause to ask.
Use the runtime picker when the provider may change.
Dynamic context
Variables fill in values when a prompt runs. Use them in prompt text and output paths with {{VAR:variable-name}}.
Names are trimmed, case-insensitive, and normalized so spaces become hyphens. {{VAR:Project Name}}, {{VAR:project name}}, and {{VAR:project-name}} all resolve to the same value.
Write a weekly update for {{VAR:project-name}} on {{VAR:date}}.
Focus area: {{VAR:focus-area}}Automatic variables come from Ottyr. Any other placeholder is custom, so Ottyr asks for its value before a manual run. One answer fills every matching token.
| Variable | Resolved value |
|---|---|
{{VAR:date}} | Current date in the system locale’s long format. |
{{VAR:year}} | Current four-digit year. |
{{VAR:month}} | Current month name. |
{{VAR:month-name}} | Current month name. |
{{VAR:day}} | Current day of the month. |
{{VAR:day-of-week}} | Current weekday name. |
{{VAR:time}} | Current time in the system locale’s short format. |
{{VAR:project-name}} | Name of the prompt’s project. |
{{VAR:prompt-name}} | Name of the prompt being run. |
{{VAR:output-file-path}} | Resolved output file path for the run. |
{{VAR:output-file-name}} | File name portion of the output path. |
{{VAR:output-file-extension}} | Extension of the output file name. |
{{VAR:output-file-basename}} | Output file name without its extension. |
{{VAR:input-file-path}} | Path of the first input file. |
{{VAR:input-file-name}} | File name of the first input file. |
{{VAR:input-file-extension}} | Extension of the first input file. |
{{VAR:input-file-basename}} | Input file name without its extension. |
{{VAR:input-file-count}} | Number of input files attached to the run. |
Input-file variables require an input file. Output-file variables require an output file path.
Automation note: Triggered and chained prompts run without interactive pickers. Avoid required custom variables in those prompts.
Write once, reuse everywhere
Snippets are reusable blocks for shared instructions, output formats, examples, policies, and project context. Define one under Snippets, then insert it from the prompt editor or type its reference.
{{SNIPPET:identifier}}Snippet identifiers are case-insensitive after normalization. Snippets work in prompt text and output paths, but cannot reference other snippets. Prefer several focused snippets over one giant context block.
Syntax at a glance
These four template commands cover dynamic values, reusable text, and multi-step workflows.
| Command | Purpose | Example |
|---|---|---|
{{VAR:name}} | Insert an automatic or custom variable. | {{VAR:date}} |
{{SNIPPET:identifier}} | Insert a reusable block of text. | {{SNIPPET:bug-report-template}} |
{{PROMPT:prompt-code}} | Start another prompt after a successful run. | {{PROMPT:summarize}} |
{{CHAIN:first|second|third}} | Run prompts in sequence, passing each output forward. | {{CHAIN:extract|summarize|email}} |
{{VAR:...}} and {{SNIPPET:...}} work in prompt text and output paths. Ottyr removes {{PROMPT:...}} and {{CHAIN:...}} from the model input and uses them to orchestrate the workflow.
Multi-step workflows
Chaining lets a successful prompt start other prompts automatically. The full output of the parent run becomes input for the next prompt.
{{PROMPT:draft-follow-up}}{{CHAIN:extract-tasks|prioritize-tasks|draft-email}}Prompt codes are unique identifiers generated from the title and editable on the prompt screen. They may contain lowercase letters, numbers, dashes, and underscores. Multiple {{PROMPT:...}} commands can start several prompts from the same parent output; use {{CHAIN:...}} when each step should feed the next.
Chains must run unattended. Target prompts need a fixed profile and cannot require custom variable input. Ottyr prevents loops by refusing to run a prompt already seen in the chain.
Good fits: draft then review; extract then summarize; classify then route; generate an artifact then create a short human-readable report. Configure chaining under Settings → Execution.
Hands-off work
A watched-folder trigger runs one or more prompts when a matching file is added, updated, or deleted.
Added and updated files become input assets. For a deletion, the prompt receives text describing the deleted path and event.
File groups include images, documents, PDFs, spreadsheets, presentations, audio, video, archives, and code.
Waits for activity to settle, resets when new events arrive, and batches rapid saves or exports.
Stops the same path firing repeatedly, with a minimum 10,000 ms fire-lock window.
Automated triggers require a fixed AI profile and no required custom variables. Pause every watcher from the trigger-list footer or the menu bar’s Automation Enabled toggle.
Run from anywhere
The Command Bar is a Spotlight-style panel for finding and running prompts even when Ottyr is not the active app.
Type to search, use ↑ / ↓ to move, Return to run, and Esc to dismiss. With no query, your pinned prompts appear first.
Output and errors appear in the panel. A common flow: copy an email, open the Command Bar, find “draft a reply,” and run it without leaving the app you’re in. The global shortcut is configurable in Settings.
Trace every result
Run History is the audit trail for manual, triggered, and chained work. It lets you revisit what ran, with which context, and what came back.
Provider-created files saved with the run.
Previewable images opened from their saved location.
Source links returned by compatible providers.
Supporting provider output separated from the answer.
Search earlier outputs or failures, jump from a triggered run to its trigger, inspect chain lineage, export CSV from Settings, or purge runs older than the retention period. Artifact cards offer Open and Folder actions; prompt details show and can clear that prompt’s artifact folder.
Make it yours
Settings group app behavior, execution limits, history, exports, and global shortcuts into focused tabs.
Launch at login, workflow-failure notifications, and Prompt Sidebar behavior.
Concurrency (2), max runs/minute (60), timeout (180 seconds), chaining, and chain depth.
Optional sounds for trigger start, completion, and error. Manual runs stay quiet.
Retention (30 days), default output directory, and cleanup for old runs.
Run history as CSV for every project or one selected project.
Rebind global shortcuts or restore their defaults.
Relative output names use the default output directory when a run has no input file to save beside. Old runs remain until you purge them using the configured retention period.
Move quickly
Both global shortcuts are configurable under Settings → Shortcuts.
Learn by doing
Guided demos teach Ottyr by completing real actions inside the app. Open Help to begin.
Build your first complete prompt workflow.
Find and run saved work quickly.
Use the floating dock for file and clipboard input.
Ready to build something useful?
Open Help in Ottyr and start the Getting Started demo.
Try a broader term like “files,” “variables,” or “shortcuts.”