Skip to content
longsurf-aiPublic

About

The Higher Order Harness (HOH "/oʊ/" ), projected as a unified chat interface.

Topics

Resources

Security policy

Stars

95 stars

Watchers

1 watching

Forks

Repository files navigation

Endo logo

Endo

The Higher Order Harness (HOH).
Compose any agent, on the subscription you already have, into any workflow.

Endo: choosing an agent, starting /best-of-n, and the workflow finishing with an answer in the thread

Download for Mac · Quick start · Features · Development guide

Latest release macOS, Apple Silicon License: MIT Build status on main

Higher Order Harness

A harness runs one agent: it sends the prompt, runs the tools and keeps the history. Endo is a Higher Order Harness (HOH). It takes agents as its building blocks, the way a higher-order function takes functions, and composes them freely:

  • In one session, switch between Codex, Claude Code, Antigravity and Grok mid-thread, or Dig In on any answer. Each agent picks up the full history.
  • Across sessions, a workflow fans work out to agents from different vendors and continues any of their sessions, and a schedule runs the whole composition again later.

Why Endo? The name comes from endomorphism, a map whose output is the same kind of thing as its input. Endo takes agents and gives you back an agent: every composition answers in a thread you can talk to, dig into and schedule like any other chat.

Quick start

Download Endo for macOS (Apple Silicon), open the disk image, and install Endo. Signed releases update themselves in the background.

To run it from source, install Node.js 24, Bun 1.4.2, and Just, then:

git clone https://github.com/longsurf-ai/endo.git
cd endo
just install --frozen-lockfile
just desktop

Sign in to at least one provider (an existing codex, claude, Antigravity or grok login works, or use Settings → Models), then ask something like "Every weekday at 9 AM, summarize my priorities for the day" and open the Schedule page.

Key features

Any agent, one protocol, your subscription

Endo drives Codex, Claude Code, Antigravity and Grok natively through their own CLIs, signed in with the accounts you already have. There are no API keys to paste, and Settings → Models shows each provider's plan usage. Every provider streams through one protocol into one harness, so answers, tool calls, permission prompts and history behave the same whichever model you pick, and you can change it mid-thread.

Codex, Claude and Gemini answer in turn in one Endo thread, then Settings → Models shows each provider's plan usage.

Workflows that compose anything

A workflow is a TypeScript file in your workspace. agent() calls any model from any provider, parallel() fans calls out, phase() groups them, and a session ID continues an earlier agent's conversation. Run one from chat and the Workflow card shows every call as it happens. /best-of-n, /multi-turn-debate, /thesis-killer and /hypothesis-race ship as workflows, and schedules run any prompt later, on a cron or once.

A workspace workflow drafts with Codex, Claude and Gemini in parallel, then Claude reviews; the Workflow card shows each call and the final answer.

Dig in, one thread, persistent memory

Select any part of an answer and Dig In: a focused conversation opens beside the thread, and the main thread stays clean. Sessions, runs and Dig Ins persist on your machine, so after a restart every thread and branch is still there, and any agent can pick up where another left off.

Selecting text and choosing Dig in opens a side conversation; after Endo restarts, the thread and its Dig In return and Claude continues where Gemini left off.

Building on it

  • Add user data as a Resource: define it once, as a Drizzle table and an Effect Schema, and get a typed API, agent tools and live updates, so people and agents change the same state under the same rules. See Adding a Resource.
  • Add an agent tool in server/agent/tool/tools/ and register it in server/agent/tool/registry.ts and server/agent/profiles/builtin.ts.
  • Change the agent's instructions in server/agent/profiles/prompt/segments/.
  • Add a page under app/src/app/ and a feature under app/src/features/.
  • Build and publish a signed Mac release with the release guide.

See the development guide and the code organization guide. Endo is at 0.1.x, so expect breaking changes.

Staying updated

Star Endo to follow releases and help more people discover it.

A cursor clicks Star on the Endo GitHub repository, changing it to Starred.

License

MIT

Credits

Endo began as the core of OpenChart. It credits Jan for the app's design and visual style, OpenCode and Effect, assistant-ui and AG-UI, and shadcn/ui, Radix UI, and Base UI.

About

The Higher Order Harness (HOH "/oʊ/" ), projected as a unified chat interface.

Topics

Resources

Security policy

Stars

95 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages