easylink-ai-open/agent-runtime — explained in plain English
Analysis updated 2026-05-18
Build a custom AI agent loop that works with multiple LLM providers without rewriting provider-specific code.
Add tool-calling, streaming, and retry handling to an agent without building the request loop from scratch.
Enforce collaboration policies like a read-only 'plan mode' that blocks certain tools.
Automatically summarize older conversation turns when a context token budget is exceeded.
| easylink-ai-open/agent-runtime | evolink-ai/awesome-blender-seedance-workflow-usecases | yliust/tactile | |
|---|---|---|---|
| Stars | 292 | 295 | 288 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 3/5 | 4/5 |
| Audience | developer | designer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires an LLM provider API key via LLMConfig, product-level concerns like memory and sandboxing must be added separately.
Agent Runtime is a Python library that provides the core loop for building AI agents, the part that sends a request to a language model, handles any tool calls the model wants to make, repeats as needed, and returns a final answer. It is designed as a standalone building block rather than a full application, so things like memory storage, chat sessions, sandboxing, and messaging channels are left for whatever product uses it to add on top. A key idea in the design is that the loop speaks a neutral, provider-independent format instead of matching OpenAI or Anthropic's specific data shapes directly. Messages, tool calls, and model responses are represented with the library's own types, and separate built-in converters translate to and from each provider's actual wire format. This means the same agent loop can work with different LLM providers just by changing configuration, without a project needing to rewrite its own logic for each one. The runtime is built to be extended through small, swappable pieces rather than one large fixed class. A project can plug in its own tool dispatcher, system prompt builder, and caching strategy, and can also inject hooks that run at points like before a model request, after a tool call, or at the end of a turn, useful for things like enforcing policy or logging. It supports streaming responses, retries model calls that fail transiently, catches errors raised by tools so they get reported back to the model instead of crashing the whole turn, and can pause a turn to wait for input from a human. There is also a mechanism for shrinking the conversation automatically when it grows past a configured token budget, using a separate model call to summarize older messages while keeping the most recent ones intact. The project is written in Python, uses the uv tool for its development environment, and is tested with fakes so no real network calls or databases are needed. It is released under the Apache License 2.0.
A provider-neutral Python library that supplies the core agent loop, tool-calling, streaming, retries, and hooks so products can build AI agents without rewriting that logic per LLM provider.
Mainly Python. The stack also includes Python, OpenAI API, Anthropic API.
You can use, modify, and distribute this code, including commercially, as long as you keep copyright and license notices and note any changes you made.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.