easy-agentic
An Agent-oriented plugin framework: it provides a unified extension-injection mechanism for agents built on top of LangGraph deepagents + langgraph-cli. Every extension (agent / tool / skill / filesystem / middleware / model, …) is wired in through plugins.
It is not a business agent, and it does not implement a runtime or a serving container — those are handled by deepagents and langgraph-cli respectively. For the detailed positioning and design, see doc/requirement.md and doc/architecture.md.
Tech stack
- Python 3.12 (pinned via uv)
- Package / environment management: uv
- Agent runtime: deepagents; serving / interface: langgraph-cli (agent server)
- LLM direction: Claude (
langchain-anthropic)
Quick start
# 1. Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Sync dependencies (install everything from uv.lock into .venv)
uv sync
# 3. Configure environment variables: copy the .env template and fill in API keys, etc.
# (.env is git-ignored — never commit real secrets)
# 4. Start the local agent server (LangGraph Studio)
uv run langgraph dev
# Defaults to http://127.0.0.1:2024
Using easy-agentic as a library
easy-agentic is published as an importable library. In a consumer project:
pip install easy-agentic # core only
pip install easy-agentic[cli] # + langgraph-cli for `langgraph dev`
pip install easy-agentic[all] # + Anthropic/OpenAI providers + CLI
Point your own langgraph.json at the built-in global router graph:
{
"dependencies": ["."],
"graphs": { "agent": "easy_agentic.graph:main" },
"env": ".env"
}
Then drop in your own agents/ and plugins/ directories. Prefer to compose the graph
yourself? Use the build_graph() factory exported from the top-level package.
Optional extras:
| Extra | Pulls in | Use when |
|---|---|---|
anthropic |
langchain-anthropic |
serving Claude models |
openai |
langchain-openai |
serving OpenAI models |
cli |
langgraph-cli[inmem] |
running langgraph dev / building an image |
all |
all of the above | one-shot install |
How uv is used
uv is a single tool that handles Python version + virtual environment + dependencies + running: it reads pyproject.toml (declared dependencies) → resolves uv.lock (pinned exact versions) → syncs them into .venv. Day to day you do not need to activate the virtual environment manually — just use uv run.
Most-used commands
| Command | What it does | When |
|---|---|---|
uv add <pkg> |
Add a runtime dependency (writes to pyproject and installs) | When you need a library (don't hand-edit pyproject) |
uv add --dev <pkg> |
Add a dev dependency (pytest, ruff, …) | Tooling used only for dev/test |
uv remove <pkg> |
Remove a dependency | When no longer needed |
uv run <cmd> |
Run a command inside the project env | Everything: uv run pytest, uv run langgraph dev |
uv sync |
Reconcile .venv with uv.lock |
After pulling code / switching environments |
90% of the time you'll only use
uv addanduv run.
Key points
- Dependencies are managed only through
uv add— don't hand-edit thedependenciesinpyproject.toml; exact versions are pinned inuv.lock(kept under version control). uv runimplicitly syncs the environment before executing, so after adding a dependency you can runuv rundirectly — no need touv syncfirst.- No
pip install, nosource .venv/bin/activate— uv prepares the environment for the subprocess automatically. - Python version is pinned to 3.12 by
.python-version; uv selects the matching interpreter automatically.
How uv run works internally (in brief)
uv run X ≈ "ensure the environment matches the lock" + "temporarily activate .venv" + "run X". X ultimately resolves to an executable under .venv/bin/ bound to this project's interpreter:
uv run pytest→ runs.venv/bin/pytest(an entry-point script generated at install time, whose shebang points at the project.venvpython)uv run python foo.py→ runsfoo.pywith.venv/bin/python
Handy flags: --no-sync (skip syncing), --frozen (don't re-resolve), --locked (require the lock to be up to date, good for CI).
Common development commands
uv run langgraph dev # Start the local agent server (entry graph: easy_agentic.graph:main)
uv run pytest # Run tests
uv add <pkg> / uv add --dev <pkg> # Add dependencies
uv sync # Sync the environment
Project documentation
- CLAUDE.md — project constitution (for AI collaborators)
- doc/ — requirements, architecture, conventions, roadmap, decision records (ADRs)
The documents under
doc/are kept in Chinese as the design/working record.
Metadata
Release files for easy-agentic 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| easy_agentic-0.1.1.tar.gz | 19.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| easy_agentic-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.0 kB
Release files / easy_agentic-0.1.1.tar.gz
| Download URL | easy_agentic-0.1.1.tar.gz |
|---|---|
| Size | 19.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f75203bfce4572d22f6979a192167543d3162e1329c1e8bbaa29d6fa057fd5b
|
|
BLAKE2b-256 checksum How to use checksums |
ef2815c92ccdb56aa57a33b2c5658de7c5c70d5b28a0968094206b0139bc520d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / easy_agentic-0.1.1-py3-none-any.whl
| Download URL | easy_agentic-0.1.1-py3-none-any.whl |
|---|---|
| Size | 24.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ecabf860e2303822839cf7aaafa4d6a5c13349b4c30766dc767a0c39379e717f
|
|
BLAKE2b-256 checksum How to use checksums |
15d39fdd1b483275dbee43e73d7c36444f6502da93485e786d43f457a2b27de9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|