Elyra
Elyra The coding agent eTerm The terminal that knows where each command ends 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

Huskarl

Huskarl is Elyra's desktop colleagues: bots that do office work and wait for your yes before anything goes out in your name. eterm and Huskarl know about each other in two ways, and nothing leaves the Mac for either.

A command that finishes tells a bot

[hooks]
on_command_finished = "http://127.0.0.1:47811/hooks/<token>"
min_seconds = 10       # only commands that ran at least this long
only_failures = true   # only commands that failed

When a command finishes that the settings want told, eterm posts a few lines to the address: what ran, how it ended, how long it took, the directory, the tab, and its last 40 lines. Tokens and keys in them are replaced with [redacted] first, the same as for a model. The address must be this Mac (http://127.0.0.1:… or http://localhost:…) or https; anything else is not sent.

In Huskarl, the address is a routine's webhook: ask a bot for "a routine that runs when its webhook is called" (Dev Desk can turn a failed deploy into an issue it proposes), and paste the address it gives. The text reaches the bot as outside text, and whatever it does about it waits for your approval in Huskarl. Any other local service that takes a POST works too.

Proposals that wait show here

[huskarl]
enabled = true         # ask Huskarl every half minute what waits

eterm asks Huskarl's daemon over its socket (~/.huskarl/run/huskarld.sock, the same user only) how many proposals wait and what they are called. When some do:

  • the line on coming back after a while starts with "2 proposals wait in Huskarl", and
  • cmd-j lists Huskarl first, as waiting, with the newest proposal.

A click on either opens Huskarl on the queue (huskarl://queue). eterm never approves anything: that is done in Huskarl, where the whole card is. When Huskarl is not installed or its daemon is not running, nothing is shown and nothing is said about it.