agents-exe

agents-exe

A handy LLM-agent tool, with a variety of calling and configuration modes so that the LLM adapts to your workflow rather than the opposite. An agent is a JSON file: an LLM endpoint and model, a system prompt, a directory of command-line tools, MCP servers, and helper agents it can prompt in turn. The same agent runs as a one-shot command, in a terminal UI, as an MCP server, or behind an HTTP server that keeps sessions across restarts.

agents-exe init                                              # write an agent.json and its tools directory
agents-exe run --agent-file agent.json --prompt "Hello!"     # one shot
agents-exe tui --agent-file agent.json                       # interactive terminal UI
agents-exe serve --agent-file agent.json                     # sessions over HTTP, durable, with a chat page
agents-exe mcp-server --agent-file agent.json                # every agent as an MCP tool

Tools are plain executables that describe themselves, MCP servers, or OpenAPI operations; helper agents are exposed to the model as functions the same way, so a root agent delegates to specialised ones and their results come back as tool results. Sessions are durable: a run can stop on a tool call that needs an external answer, a background call, or a message from another agent, and be resumed later, in the same process or another one.

The code is on GitHub at lucasdicioccio/agents-exe. It is a Haskell cabal project: the agents library, the agents-exe and agents-server executables, and agq, a small query tool over stored sessions.

See it work

One prompt, four agents: a front desk asks three helpers in the same turn, each runs a tool of its own, and agents-exe spectate shows the sessions while they work. An unedited capture, from a run on a laptop against a local model:

┌────────────────── agents ─────────────────┐┌──────────── text: librarian (following) ────────────┐
│* repo-tour-desk  90669359  running 1m46s  ││                                                     │
│  - historian  326ce547  returned 18s      ││                                                     │
│  * code-counter  401bf8a5  running 1m07s  ││                                                     │
│  * librarian  fae942c5  running 1m07s     ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
└───────────────────────────────────────────┘│                                                     │
┌──────────────── tool calls ───────────────┐│                                                     │
│* io_prompt_agent_code-counter  repo-tour-d││                                                     │
│* io_prompt_agent_librarian  repo-tour-desk││                                                     │
│- io_prompt_agent_historian  repo-tour-desk││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
│                                           ││                                                     │
└───────────────────────────────────────────┘└─────────────────────────────────────────────────────┘
 http://localhost:8765 | 3/4 sessions running | 2 tool calls | 27 events | up/down select, f follow,

The demo has the rest of the run and the commands to reproduce it. How agents-exe compares places it next to LangGraph, AutoGen, the OpenAI Agents SDK, the Claude Agent SDK and CrewAI.

The terminal UI

The terminal UI on its Chats tab: the agents and their conversations on the left, the message editor and the session on the right, with a tool call waiting for an answer in the Pending panel

agents-exe tui is the interactive mode: pick an agent, hold several conversations at once, read each session turn by turn, and answer the tool calls a run is waiting on. The screenshot is produced by the end-to-end tests, which drive the real binary in a pseudo-terminal against a scripted model. The TUI guide has the keys and the other views.

How it fits together

The layers of agents-exe: the CLI, TUI, MCP server and HTTP server on top of the session runner and agent tree, over sessions, tools and LLM endpoints

The interfaces are thin: the terminal UI and the HTTP server are both clients of one session runner, while the one-shot, MCP and inspection commands go straight to the agent tree. Everything below the tree (sessions, tools, LLM endpoints) is shared, so an agent behaves the same in each mode.

Explore

  • The demo: a root agent and three helpers at work, recorded, with the commands to run it.
  • How agents-exe compares: what it is and is not, next to five other agent frameworks.
  • Getting started: build it, write a first agent, store an API key, and run it in each mode.
  • Architecture: the layers, the OS model underneath (entities, resources, conversations), and where a session lives.
  • Command reference: the global options and every agents-exe command, one entry each.
  • Tools and executable tools: how a program describes itself to the agent, and how MCP servers and OpenAPI documents become tools.
  • Parameters, bindings and narrowing: pre-bind tool arguments, declare parameters an operator or a client supplies, and hand a narrowed helper to a sub-agent.
  • agents-server: agents over HTTP, durable sessions, event streams, the chat page, MCP over HTTP.
  • Sessions and asynchronous tool calls: turns, deferred and background calls, resuming.
  • The TUI: the terminal UI, its keys and its views.
  • Docs and Specs: every guide and reference, and the design documents with what of each has shipped.