Documentation

Set up OmniKey and master the agent workflow.

A practical guide for local setup, CLI commands, usage metrics, browser access, scheduled jobs, MCP tools, saved instructions, Telegram control, and the latest release notes.

Getting Started

Install the CLI, configure a provider, start the daemon, and open the desktop app.

omniAgent

Turn omniAgent into a specialist with task instructions, project paths, and tools.

@ Commands

Use inline commands anywhere to rewrite text, ask questions, or run omniAgent.

CLI Commands

Run agents, manage services, open browser access, schedule jobs, and control MCPs.

Usage Metrics

Enable token recording and review consumption in the desktop Usage page.

Browser Access

Grant OmniKey a dedicated authenticated browser profile for private web pages.

Scheduled Jobs

Configure recurring and one-time automation from the desktop app or CLI.

MCP Servers

Connect external tools over stdio, HTTP, or SSE and clarify built-in defaults.

Telegram Integration

Create a bot, save credentials, run the daemon, and use remote commands.

Install and run OmniKey locally

OmniKey runs a local backend daemon and a desktop app. The CLI is the fastest way to configure providers, start services, and manage optional integrations.

1

Install the CLI

Use Homebrew on macOS, or npm anywhere Node.js is available.

brew install GurinderRawala/omnikey/omnikey-cli

# or
npm install -g omnikey-cli
2

Configure your first provider

The onboarding flow writes your local OmniKey config and validates the provider details before the daemon starts.

omnikey onboard
3

Start the backend daemon

Keep the daemon running while the desktop app, Telegram bridge, and agent sessions are active.

omnikey daemon

Turn omniAgent into the specialist your task needs

omniAgent is the task-focused chat experience inside the desktop app. Add a saved task instruction to transform it into a coding agent, research assistant, release reviewer, support analyst, operations helper, or any other specialist workflow. Then provide the concrete goal in chat, including a project path, URL, file, or data source when the task should start from a specific place.

You can also invoke omniAgent from any app: type an @omniAgent instruction, select that text, and press ⌘T / Ctrl+T. OmniKey sends the selected command to the agent without requiring you to switch to the chat window first.

1

Add or select a task instruction

Task instructions define the specialist behavior: how omniAgent should inspect context, which tools it can use, what quality bar to follow, how to validate the work, and what to include in the final answer. Save reusable instructions for common roles, then select the right one before starting a chat.

2

Give omniAgent the target and goal

Type the outcome you want in natural language. For project work, include the local path, such as /Users/you/projects/app, plus the exact task: fix a bug, review changes, add a feature, investigate logs, write docs, or run a release check. omniAgent uses the path as the working context and begins from there.

3

Let connected tools do the work

While the task runs, omniAgent can use every enabled tool it is connected to, including MCP servers, terminal commands, filesystem access, web fetch, and an authenticated browser profile for pages that require login. Tool availability depends on your local setup, enabled MCP servers, and browser access settings.

Example: select a Coding Agent instruction, then ask In /Users/you/projects/api, review the current changes, fix any blockers, and run the smallest meaningful verification. omniAgent will work from that path and use the tools available to complete the task.

Unlimited Flexibility with @ Commands

Prefix selected text with @ when you want OmniKey to follow an inline instruction instead of only applying a fixed shortcut behavior. Write the command in any app, select it, and press an OmniKey shortcut. OmniKey reads the selected text, uses your configured provider, and pastes the result back in place.

Command or shortcut What it does How to use it
⌘E / Ctrl+E Enhance a Prompt: expands rough text into a stronger, clearer prompt. Select any text in any app, then press the enhance shortcut.
⌘G / Ctrl+G Fix Grammar & Clarity: corrects spelling, grammar, and readability. Select text, press the grammar shortcut, and OmniKey preserves your meaning.
⌘T / Ctrl+T Run a Custom Task: applies your saved task instruction to selected text. Create task instructions in the menu bar app, then select text and run the task shortcut.
@omnikeyai Ask OmniKey Anything: runs the instruction you write after the command. Start selected text with @omnikeyai, then press any OmniKey shortcut.
@omniAgent Run the AI agent: starts an omniAgent task from selected text. Start selected text with @omniAgent, then press ⌘T / Ctrl+T.

Ask OmniKey Anything with @omnikeyai

Use @omnikeyai for flexible one-shot instructions that should return a direct answer or transformed text. It is powered by your configured provider, such as OpenAI, Anthropic, Gemini, or an OpenAI-compatible open model.

@omnikeyai write this text into valid markdown format

This is best for formatting, rewriting, summarizing, translating, drafting, or answering a focused question without launching a full agent workflow.

Run omniAgent anywhere with @omniAgent

Use @omniAgent when the task needs more than a quick text response. Select the command and press ⌘T / Ctrl+T. omniAgent can gather context from your terminal and the web, combine saved task instructions if configured, use connected MCPs and authenticated browser access, complete the task, and paste the result.

@omniAgent find all TODO comments in my project and summarise them

Add a project path, URL, or file name when you want the agent to start from a specific place, for example @omniAgent in /Users/you/projects/api, review the current changes and run validation.

Web search support: omniAgent can use configured search providers such as DuckDuckGo, Serper, Brave Search, Tavily, and SearXNG when the task needs web context.

Choose a hosted or OpenAI-compatible model

OmniKey supports OpenAI, Anthropic, Gemini, and Open Model providers. The Open Model option is for OpenAI-compatible APIs such as self-hosted or open source model gateways.

Provider setup: start with omnikey onboard or update provider settings in the desktop app. The active provider and model can be changed before each chat, scheduled job, or Telegram task.
Provider Use it for Common settings
OpenAI GPT models and Responses API workflows. OPENAI_API_KEY
Anthropic Claude Sonnet or Opus agent runs. ANTHROPIC_API_KEY
Gemini Google Gemini models. GEMINI_API_KEY
Open Model Any OpenAI-compatible model endpoint. OPEN_MODEL_API_KEY, OPEN_MODEL_BASE_URL
Custom models: use the chat page model selector to enter the exact model string exposed by your provider. Enable Responses API only when that endpoint supports OpenAI Responses-compatible requests.

Run and manage OmniKey from the CLI

The desktop app is the easiest place to chat with OmniAgent, but the CLI is useful for setup, automation, services, and quick maintenance. Most commands expect the local daemon to be available.

Command Use it for
omnikey onboard Configure your first provider and write the local OmniKey config.
omnikey daemon Start the backend used by the desktop app, CLI commands, and agent sessions.
omnikey status Check whether the local daemon is reachable and healthy.
omnikey grant-browser-access Run the one-time guided setup for authenticated browser tab reading.
omnikey browser open Reopen the saved OmniKey browser profile after browser access is configured.
omnikey schedule ... Create, list, remove, or immediately run scheduled jobs.
omnikey mcp ... Add, list, update, toggle, or remove MCP servers available to the agent.
omnikey telegram ... Install, start, stop, restart, inspect, and tail logs for the Telegram daemon.
Tip: use the desktop app for day-to-day agent conversations, saved instructions, model selection, scheduled jobs, and MCP server edits. Use CLI commands when you need repeatable setup, service control, or terminal automation.

Track token consumption in the desktop app

OmniKey can record per-call usage metrics so the desktop Usage page shows how many tokens your AI calls consume. Usage recording is controlled from the Settings window and is persisted in the local agent settings database, so changes take effect without restarting the daemon.

1

Enable usage recording

Open Settings → Agent Access in the desktop app and turn on Usage recording. When enabled, OmniKey stores the model, mode, thread/session, and token counts for each AI call. Self-hosted installs keep detailed recording off by default, so enable it if you want the Usage page to populate from that point forward.

2

Open the Usage page

In the desktop Settings window, choose Usage. The page reads recorded metrics from /api/usage and lets you filter by time range and provider. It reports token counts only, using values recorded from actual AI calls instead of estimated provider pricing.

3

Review consumption by model and session

The Usage page shows total tokens, input tokens, output tokens, request count, average daily tokens, daily token split, tokens by provider/model, and recent sessions with recorded token totals. Use it to spot heavy workflows, compare models, and understand how much context each agent session consumes.

Recording starts when enabled: disabling usage recording stops new detailed rows from being saved. Existing context counters in active sessions are not affected, and previously recorded Usage page data remains available for the selected range.

Let OmniAgent read pages you are signed in to

Browser access is for pages that normal web fetch cannot reach, such as private dashboards, internal docs, or account pages. OmniKey uses a dedicated browser profile so your main browser profile is not modified.

Recommended guided setup

Run the CLI flow once. It detects supported browsers, creates a saved debug profile under ~/.omnikey/browser-debug-profiles/, finds a port, registers a login startup entry, launches the browser, and verifies access.

omnikey grant-browser-access

Sign in to the sites OmniAgent should use inside the opened OmniKey browser profile. Those sessions persist between restarts.

Reopen or change access

Reopen the saved profile whenever you need to refresh logins or start the debug browser manually.

omnikey browser open

Re-run omnikey grant-browser-access to update the browser, profile, port, or startup behavior. On macOS Apple Events mode may require enabling Allow JavaScript from Apple Events in the selected browser.

Manual setup

Use the manual method only if the guided CLI flow is unavailable or you need to wire a custom browser/profile yourself. OmniKey supports Chrome, Brave, and Edge on Windows; and Chrome, Brave, Edge, Arc, Vivaldi, Opera, Chromium, and Safari on macOS.

1

Windows remote debugging port

Modern Chrome-based browsers require --remote-debugging-port to use a dedicated --user-data-dir, not your everyday browser profile. Create a profile folder, close every browser window, and launch the browser from PowerShell.

mkdir "$env:USERPROFILE\.omnikey\browser-debug-profiles\chrome-default"

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
  '--remote-debugging-port=9222' `
  "--user-data-dir=$env:USERPROFILE\.omnikey\browser-debug-profiles\chrome-default" `
  '--no-first-run' '--no-default-browser-check'

Sign in inside the fresh window. To start it on login, add the same command as a Registry Run value under HKCU\Software\Microsoft\Windows\CurrentVersion\Run.

2

macOS remote debugging port

For Chrome-based browsers on macOS, create a dedicated profile folder, quit the browser fully with ⌘Q, and launch it from Terminal with a debug port.

mkdir -p ~/.omnikey/browser-debug-profiles/chrome-default

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.omnikey/browser-debug-profiles/chrome-default" \
  --no-first-run --no-default-browser-check

Replace the app path for Brave, Edge, Arc, Vivaldi, Opera, or Chromium. To auto-start on login, create a launchd agent at ~/Library/LaunchAgents/com.omnikey.browser-debug.plist with RunAtLoad = true pointing to the same command.

3

macOS Apple Events access

Chrome, Brave, Edge, Arc, Vivaldi, Opera, and Chromium can expose tab content through Apple Events. In the browser menu bar, open View → Developer → Allow JavaScript from Apple Events, make sure it is checked, then restart the browser.

For Safari, go to Safari → Settings → Advanced, enable Show features for web developers, then open Develop → Allow JavaScript from Apple Events and make sure it is checked.

Schedule prompts to run automatically

Scheduled jobs run OmniAgent prompts on a recurring cadence or at a one-time date and time. Use them for status reports, reminders, routine research, cleanup checks, or any repeatable agent workflow.

1

Open Scheduled Jobs in the desktop app

From the OmniKey menu bar on macOS or system tray on Windows, choose Scheduled Jobs. The window shows each job, whether it is enabled, and when it will run next.

2

Create the job

Click Add Job, enter a clear label, write the prompt OmniAgent should run, choose the model or instruction set if needed, and select either a recurring schedule or a one-time run time.

3

Manage and test it

Use Enable/Disable to pause work without deleting it, Edit to adjust prompts or timing, and Run Now to verify the job immediately.

CLI command Action
omnikey schedule add Create a job with an interactive label, prompt, schedule type, and timing flow.
omnikey schedule list List jobs with status and next run details.
omnikey schedule remove Choose a job interactively and confirm deletion.
omnikey schedule run-now <job-id> Trigger a scheduled job immediately without waiting for its next run.

Extend OmniAgent with external tools

MCP servers expose tool capabilities to OmniAgent, such as filesystem access, browser automation, GitHub, databases, internal APIs, or custom company tools. Once a server is registered and enabled, OmniAgent can discover and call its tools when they are relevant to the task.

Manage servers in the desktop app

Open MCP Servers from the menu bar or system tray. Add a server, choose stdio, HTTP, or SSE, then provide the command, URL, arguments, headers, and environment variables required by that server. Toggle a server off to keep it configured but unavailable to agents.

Manage servers from the CLI

omnikey mcp add
omnikey mcp list
omnikey mcp remove
omnikey mcp toggle <id>
omnikey mcp update <id>

The add and update flows are interactive and reuse existing values as defaults when editing.

Built-in vs. configured MCPs: OmniKey includes built-in agent instructions that tell the agent when to use tools. Setup may also seed common MCP entries such as filesystem, Playwright, or Git if they are missing. These defaults are not a requirement to add your own servers, and disabling a configured MCP only removes that tool source from future agent runs.

Control OmniAgent from Telegram

The Telegram daemon lets you start, resume, stop, and inspect agent sessions from a configured chat. Commands from other chats are ignored.

1

Create a Telegram bot

Open @BotFather, run /newbot, and save the token as TELEGRAM_BOT_TOKEN.

2

Find your chat ID

Send your bot a message, then fetch updates and copy the chat.id. Group and channel IDs are negative.

curl "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/getUpdates"
3

Start the Telegram daemon

The CLI prompts for missing credentials, validates the token, and installs the local service.

omnikey telegram start

# or start the backend and Telegram bridge together
omnikey daemon --telegram
Command Action
/cmd Start a guided OmniAgent task or resume a recent session.
/cmd --verbose Stream shell output, tool calls, reasoning updates, and final answers.
/model Choose the active model for the current provider.
/task Show the active reasoning snapshot or last final answer.
/stop Abort the running session cleanly.
Port setting: the Telegram bridge uses OMNIKEY_TELEGRAM_PORT, defaulting to 6666, so it does not collide with generic PORT settings from other apps.

Save repeatable task behavior

Saved instructions are reusable guidance blocks for common workflows. They are separate from MCP servers: instructions shape how the agent behaves, while MCP servers provide additional tools the agent may call.

Coding Agent template

New installs seed a Coding Agent instruction set if it is missing. It asks the agent to inspect the repository first, keep edits scoped, preserve user work, validate changes, and report what changed.

Review current changes first.
Keep edits minimal and aligned with the codebase.
Use terminal, file, git, Playwright, or MCP tools when they help.
Run focused validation and report remaining risk.

How to use instructions

In the desktop app, choose a saved instruction before starting a task, or mention the instruction by name in your prompt. While a run is active, send live steering from chat to add guidance without starting a separate follow-up session.

  • Saved templates
  • Per-task guidance
  • Live steering
  • Model selection
  • MCP-aware runs

What is new in the latest release

These notes sync from GitHub Releases when available. The bundled summary stays visible if GitHub cannot be reached.

Loading GitHub release notes View all releases
CLI & API

CLI and API v1.6.24

  • Provider settings consistently honor custom daemon config paths.
  • Open Model provider supports generic OpenAI-compatible endpoints.
  • Open Model settings use OPEN_MODEL_API_KEY and OPEN_MODEL_BASE_URL.
  • Responses API routing is enabled for GPT-5 family models.
  • Optional Responses API toggle is available for compatible Open Model endpoints.
  • Telegram reliability improvements keep long-running task output and final answers flowing.
  • Default Coding Agent instructions and file, Playwright, and Git MCP entries are seeded when missing.
macOS

macOS app v1.4.2

  • Chat composer can steer a running OmniAgent task without queueing a new turn.
  • Input state now switches between Send, Steer, and Stop while a task is active.
  • Steering messages are inserted into the active conversation with a visible steering label.
  • Streaming continuation output stays attached to the current session after steering.
Windows

Windows app v1.19.2

  • Chat composer can steer a running OmniAgent task.
  • Input state now switches between Send, Steer, and Stop.
  • Steering messages appear in conversation history and preserve streamed continuation output.
  • Custom model entry is available from the chat model selector.