Skip to main content

Quenda

A lightweight, layered Agent framework for Python

Python License Status


What's New

2026-06 (v0.3.0)

  • Skills Framework — Composable capability packages with instructions, resources, and tools. Discover, activate, and use skills on demand. Learn more →
  • Context Compression — Automatic summarization when context grows large, with configurable policies and manual /compress command.
  • Interaction Requests — LLM can ask users for choices, confirmations, and input via structured interaction protocol.
  • Custom Tool Extensions — Agent-local tools via extensions/tools/*.py with config.yaml declaration.
  • Policy System — Runtime policies for termination, tool selection, and result processing.
  • Multimodal Support — Image input support with resource activation.
  • 26 Model Providers — OpenAI, Anthropic, DeepSeek, DashScope, Moonshot, Ollama, and 20 more.

Quenda Code

Quenda Code is an AI coding agent that runs in your terminal. It reads your codebase, writes code, runs commands, and helps you ship.

📖 Quenda Code Documentation →

# Install
pip install quenda quenda-code

# Start interactive session
quenda code

# One-shot task
quenda code "Add error handling to the API client"

Features

  • Code-aware — Reads and understands your codebase structure
  • Workspace-scoped — All file operations stay within your project directory
  • Safe execution — Shell commands filtered, Python code sandboxed
  • Session persistence — Conversations saved and resumable
  • Interactive mode switching — Switch between code, architect, and chat modes
  • Skills on demand — Activate capability packages as needed

REPL Commands

Command Description
/help Show available commands
/mode [code|architect|chat] Switch interaction mode
/model <provider>/<model> Switch model mid-session
/skill list List available skills
/skill activate <name> Activate a skill
/compress Manually compress context
/status Show session and token info
/reset Clear conversation history

Example Session

> read the main entry point and explain how it works

I'll read the main entry point...

[Reads src/quenda/cli.py]

The entry point is `cli.py:main()`. It defines two subcommands:
- `quenda run --agent <path>` — Run a custom agent from AGENT.md
- `quenda code` — Run Quenda Code Agent (built-in)

Each command supports one-shot mode (with a message) or REPL mode (without).

> add a --version flag to the CLI

I'll add a `--version` flag to the argument parser...

[Applies patch to cli.py]

Done. Added `--version` flag that prints the version and exits.

> run the tests

[Runs pytest]

All 42 tests passed.

Quenda SDK

Build agents in Python with a minimal API:

from quenda import Agent, tool
from quenda.providers import get_provider_registry
from quenda.tools import get_core_tools
import asyncio

@tool
def calculate(expression: str) -> float:
    """Safely evaluate a math expression."""
    import ast
    node = ast.parse(expression, mode='eval')
    return eval(compile(node, '<string>', 'eval'), {"__builtins__": {}}, {})

model = get_provider_registry().get_model("deepseek", "deepseek-v4-flash")

agent = Agent(
    name="assistant",
    system_prompt="You are a helpful assistant.",
    tools=[calculate, *get_core_tools(".")],
    model=model,
)

async def main():
    session = agent.open_session()
    result = await session.send("What is 15% of 847?")
    print(result)

asyncio.run(main())

📖 SDK Tutorials — 8 chapters covering agents, tools, providers, sessions, and events.


Installation

# Quenda Code — AI coding assistant (CLI)
pip install quenda quenda-code

# Quenda SDK — Build agents in Python
pip install quenda

Requires Python 3.12+. Zero required runtime dependencies.


Features

  • Minimal API. Agent, Session, @tool, and you're done.
  • 26 model providers. OpenAI, Anthropic, DeepSeek, DashScope, and more — one registry, one API.
  • 9 core tools. Filesystem, shell, Python sandbox, and user interaction — all workspace-scoped.
  • Skills framework. Composable capability packages with instructions and resources.
  • Security by code. SSRF protection, command filtering, import restrictions, workspace isolation.
  • Observable by default. Every run emits structured events for streaming and debugging.
  • Context compression. Automatic summarization when context grows large.

Model Providers

Quenda ships with 26 built-in providers covering 300+ models:

Provider Example Models API Key Env
openai gpt-4o, gpt-4-turbo OPENAI_API_KEY
anthropic claude-3-5-sonnet-20241022 ANTHROPIC_API_KEY
agnes agnes-2.0-flash AGNES_API_KEY
deepseek deepseek-chat, deepseek-v4-flash DEEPSEEK_API_KEY
deepseek-anthropic deepseek-v4-flash (Anthropic API) DEEPSEEK_API_KEY
dashscope qwen-max, qwen-plus DASHSCOPE_API_KEY
moonshot moonshot-v1-8k, moonshot-v1-128k MOONSHOT_API_KEY
openrouter anthropic/claude-3.5-sonnet OPENROUTER_API_KEY
ollama llama3, mistral, qwen2 local (no key)

Full provider list →

Add a custom provider in 5 lines:

from quenda.providers import ProviderSpec, ModelSpec, get_provider_registry

registry = get_provider_registry()
registry.register(ProviderSpec(
    id="my-provider",
    name="My Provider",
    base_url="https://api.example.com/v1",
    api="openai-completions",
    api_key="${MY_API_KEY}",
    models=(ModelSpec(id="my-model", name="My Model", tool_calling=True),),
))

Built-in Tools

get_core_tools(workspace) returns 10 essential framework tools:

Tool Capability
list_files Browse directories (ls, find, tree)
search_text Search file contents (grep, rg)
read_file View files with line ranges
write_file Create or overwrite files
apply_patch Apply targeted text patches
run_command Execute commands with argv list
run_shell Execute shell commands (filtered)
execute_python Run Python code in subprocess
request_interaction Ask the user for structured input
request_skill_activation Ask Host to activate discovered skills

Full tool reference →


Architecture

Interface → Host → Runtime → Kernel
Layer Responsibility
Kernel Synchronous model-tool loop. No knowledge of agents, sessions, or users.
Runtime Async Agent/Session/Run lifecycle. Event emission, context management.
Host Persistence, identity, permissions, instruction composition, skills.
Interface Event rendering, user interaction, REPL.

Each layer depends only on the layer inside it. The Kernel is fully testable with fake models — no network required.


Documentation

Resource Description
Getting Started Setup and your first agent
Tools Guide All built-in tools with parameters
Skills Guide Capability packages system
API Reference Complete API reference
SDK Tutorials Step-by-step Python SDK guide (8 chapters)
CLI Tutorials Step-by-step Quenda Code guide (5 chapters)
Architecture Decisions ADR records

Contributing

Quenda is intentionally small. Before making a change, read CLAUDE.md and the ADR records.

  1. Identify which architectural layer owns the change.
  2. Prefer the smallest complete change; add tests with behavior changes.
  3. Do not cross established layer boundaries.
pip install -e ".[dev]"   # editable install with dev tooling
pytest                    # run tests
ruff check src/quenda       # lint

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quenda-0.3.1.tar.gz (216.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quenda-0.3.1-py3-none-any.whl (293.7 kB view details)

Uploaded Python 3

File details

Details for the file quenda-0.3.1.tar.gz.

File metadata

  • Download URL: quenda-0.3.1.tar.gz
  • Upload date:
  • Size: 216.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for quenda-0.3.1.tar.gz
Algorithm Hash digest
SHA256 8c5a5c39ade8e42c6d490b624c3ba4cd78505ce70bb88928d6fb704e3508c504
MD5 391d73bb575620b1e1a42175224fcc66
BLAKE2b-256 ed158f78801c4b53ef3baae2d3f348942d7f94e637f766ff54bf8e035ec2336a

See more details on using hashes here.

Provenance

The following attestation bundles were made for quenda-0.3.1.tar.gz:

Publisher: publish-quenda.yml on xvshiting/quenda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quenda-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: quenda-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 293.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for quenda-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3ede2a3c5f9c8697adbffcedec85ac8f6c9cb17ab63f7fa6685a4ad2ca2424f2
MD5 197c925ae7ef9508d78e5531eac957f6
BLAKE2b-256 6176e5e01fff40ae78884608dda90b7c75343ec2a439eb8d0afb9b1ecb0b4b5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for quenda-0.3.1-py3-none-any.whl:

Publisher: publish-quenda.yml on xvshiting/quenda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

This release

0.3.1 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page