Elyra
Elyra The coding agent eTerm The terminal that knows where each command ends Huskarl AI colleagues on your own Mac Starf An activity monitor for Apple silicon that never invents a number etrans An SSH and SFTP client for macOS Elyra VM Virtual machines for macOS, Linux and Windows on your Mac Litr A small, native web browser for macOS Notr A notebook for macOS e The native code editor Elyra Grove Native local development environment Askr The real server for Laravel & PHP Elyra Framework Rust + Svelte 5 framework for desktop apps Elyra Conductor Local project conductor Refr Local-first PDF workspace for macOS Elyra Workspace A desktop workspace for coding agents Elyra SQL Server MySQL-compatible SQL server in Rust Elyra Félagi Agents as teammates on one board Elyra SQL Client Native desktop SQL workbench Elyra SQL Anywhere Replication-ready SQL engine Elyra Sjá SEO & GEO workspace for macOS Elyra DataGrid Server-driven data grid for Laravel
Release notes
Changelog
Elyra

Settings

Open with ⌘, (or the gear in the toolbar). Settings are stored in local SQLite; secrets go to the macOS Keychain (see Security). If the Keychain refuses a write, the value is kept in the database instead of being lost, and saving reports which secret that happened to.

License

Shows trial/licensed status and lets you activate a code. See Licensing.

AI Agent

Setting Notes
Provider OpenAI or Anthropic
API token Stored in the Keychain, never in the database
Model Suggestions per provider (e.g. GPT‑5.1, Claude Sonnet 5); free text — any model id your key supports
Ask before the AI writes files On by default — pauses with a preview before each file write

Switching provider auto-selects that provider's newest suggested model.

Citation probe

Asks ChatGPT, Claude and Perplexity the question a page is meant to answer and records whether they cite it — see Features.

Setting Notes
OpenAI / Anthropic / Perplexity / Gemini API key One per engine, stored in the Keychain. An empty OpenAI or Anthropic key falls back to the AI Agent key when that provider is selected there, so a key is never pasted twice. Only engines with a key are offered.
Model (per engine) Defaults: gpt-5.5, claude-opus-5, sonar, gemini-3.8-flash — the current flagships with web search. Any model id your key supports.
Perplexity endpoint Defaults to https://api.perplexity.ai/chat/completions. Perplexity has moved its API surface more than once; change it here if their documentation names a new chat-completions URL.
Gemini endpoint Defaults to the Interactions API (…/v1beta/interactions) with the google_search tool — the closest API path to Google's own answer surface. The classic generateContent grounding shape is read too if you point it there.
TypeSafe API key (Jev) Optional, stored in the Keychain. With a key, every probe is also judged by Jev: how completely the page answers the question, whether a citing engine's statements about the page match the page, and how each answer positions the brand — see Features. The same key enables internal-link plans from a crawl.
Jev model / TypeSafe endpoint Defaults jev-latest and https://api.typesafe.ai/v1/systemone.

Each probe sends the question (and, through the engine's own web search, nothing else) to the providers you enabled, and costs a few cents per engine on your account. With a TypeSafe key it also sends the page's main text (bounded, ~24 000 characters) and the engines' answers to TypeSafe; Jev's answers are shown, never acted on.

Performance (Core Web Vitals)

Setting Notes
Measure performance Adds the Performance category on single-page analysis
PageSpeed API key Optional; raises Google's rate limits
Strategy Mobile or Desktop

Google Search Console

Real impressions, clicks, CTR and average position from Google — as measured facts alongside Sjá's own analysis.

Search Console has no API-key path: every call needs a user-consented OAuth token, and its scope (webmasters.readonly) is one Google classifies as sensitive. Rather than shipping an OAuth client of ours (which would put a non-confidential secret in the binary and require Google's app verification), you connect your own client:

  1. In Google Cloud Console, create an OAuth client of type Desktop app.
  2. Enable the Google Search Console API for that project.
  3. Paste the client id and client secret into Settings.
  4. Hit Connect Google — your browser opens Google's consent screen, and the app catches the redirect on a temporary 127.0.0.1 port (PKCE, S256).

Because the Cloud project is yours, the "unverified app" screen is expected and harmless; approve it for your own account.

Setting Notes
OAuth client id From your Google Cloud project; stored in the database
OAuth client secret Stored in the Keychain, never in the database
Connect a separate Google account per project Off: one account for the whole app. On: each project signs in to its own account
Connect / Disconnect Connect stores a refresh token in the Keychain; Disconnect deletes it
Show properties Lists the properties the account can read, flagging the one that covers the current project

One account, or one per project?

Leave the toggle off if every property you work on sits under a single Google account — one sign-in then covers all projects, and each project is matched to a property by URL coverage.

Turn it on for agency setups where each client has their own Google account. The OAuth client stays shared (one Cloud project can serve any number of accounts); only the sign-in differs, and every project keeps its own refresh token. Connect and Disconnect then act on the selected project, so pick the project first.

Switching the toggle deletes nothing: a token stored under the other mode stays in the Keychain and comes back when you switch back. Use Disconnect to remove one for good.

Domain properties (sc-domain:) cover every subdomain; URL-prefix properties only cover URLs under their prefix. Properties where you are an unverified user return no data and are marked as such.

Analysis defaults

Setting Notes
Default language Sent as Accept-Language; As served (the default) negotiates nothing
Default market Optional country variant, e.g. Portuguese + Brazil → pt-BR
Default recipe The objective/recipe selected on launch
Request timeout Seconds per HTTP request (3–120)
Run monitors and scheduled probes in the background Installs a launchd agent (~/Library/LaunchAgents/com.elyra.sja.tick.plist) that runs elyra-sja tick every 15 minutes while the app is closed. Off by default; also switchable from the Monitors view. Logs: ~/Library/Logs/Elyra Sja/tick.log.

Branding

Agency / company name — shown in the header of exported PDF reports.