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
Elyra Workspace

Elyra Workspace

Elyra Workspace is where coding agents work on your projects. Huskarl writes no code; with Workspace connected, a bot can hand a coding task to an agent there, and hear when it is done. Dev Desk does this for a small bug it has understood: it proposes the task, you approve it, Workspace starts a thread in a worktree of its own, and when the thread is done the bot's thread here says so, with the agent's last reply (often a pull request).

Connecting

  1. In Elyra Workspace → Settings → Agents & MCP, under External clients, click Pair full-access client. A read-only client cannot start threads, and Huskarl refuses it.
  2. Copy it with any of the copy buttons (the one for Claude Code is fine): Huskarl reads the token out of what you paste.
  3. In the bot's settings in Huskarl, under Connections, paste it in the Elyra Workspace field and click Connect.

The daemon tries the client on Workspace's gateway before it keeps it, then keeps the token in the Keychain under no.huskarl.workspace. The thread says "✓ Connected to Elyra Workspace". From the terminal, it comes on stdin:

pbpaste | huskarld connect <bot> workspace

Workspace must be running for the bots to reach it. Its gateway listens on 127.0.0.1 on a port it chooses and keeps; Huskarl reads the port from Workspace's own database (~/.elyra/state.db, only the port) each time, so a port that changes needs nothing from you. Unpairing the client in Workspace takes the bots' access away at once: the bot is then told to connect again.

Tools

Tool Class What
workspace_list_projects Read Workspace's projects: id, name, folder
workspace_list_threads Read its threads, for one project or all: id, title, status
workspace_read_thread Read the latest part of a thread's conversation
workspace_wait Read waits up to five minutes for a thread to finish its turn or need you
workspace_start Send starts a thread in a project with a task, in a worktree of its own unless told otherwise: "Start a thread in Elyra Workspace: web"
workspace_send Send writes to a thread, to answer or steer it

Starting an agent on your code is Send, so it waits for you like a mail: the card shows the project and the task word for word, and points out addresses and links that came from outside text. A task an attacker wrote in an issue therefore never reaches a coding agent unseen. Dev Desk is told to write the task in its own words, never to paste an issue in as the instructions.

Everything read from Workspace is outside text.

When it is done

Once a thread is started (or written to), the daemon follows it on Workspace's gateway, an hour at a time for as long as Workspace answers. When the thread finishes its turn, needs your approval in Workspace, fails or is stopped, the bot's thread gets a line, and a notification if you are not looking:

Elyra Workspace: «Fix #7» is done.

Fixed the crash on start; PR #12 is open.

The bot is not started by it: ask it to go on ("comment on the issue") when you have read it. What the agent in Workspace may do while it works is up to Workspace's own permission mode; if it asks, you answer in Workspace.

From Workspace to Huskarl

An agent in Workspace can hand something back to a bot through a routine's webhook: make a routine on webhook for the bot (ask it, "make a routine that runs when its webhook is called"), and give the agent the address. The body reaches the bot as outside text, and whatever the bot then sends waits for your approval as always:

curl -X POST --data "PR #12 fixes #7 and is merged: tell Kari at Acme" \
  http://127.0.0.1:47811/hooks/<token>

See Routines. Workspace never sees the bots' mail, calendar or logins: the webhook only lets it ask.