longsurf-ai/endo
The Higher Order Harness (HOH "/oʊ/" ), projected as a unified chat interface.
About longsurf-ai/endo
longsurf-ai/endo is an open-source project on GitHub, mainly written in TypeScript. The Higher Order Harness (HOH "/oʊ/" ), projected as a unified chat interface. It currently holds 94 stars and 5 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
AI Homed tracks it on the Today's Trending board, currently at rank #98 with 0 new stars today.
GitHub Repository Details
README
Endo
The Higher Order Harness (HOH).
Compose any agent, on the subscription you already have, into any workflow.
Download for Mac · Quick start · Features · Development guide
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
- Across sessions, a workflow fans work out to agents from different
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.
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.
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.
Building on it
- Add user data as a Resource: define it once, as a Drizzle table and an Effect
- 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 underapp/src/features/. - Build and publish a signed Mac release with the
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.
License
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.
