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
- 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.
- Copy it with any of the copy buttons (the one for Claude Code is fine): Huskarl reads the token out of what you paste.
- 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.