A multi-agent AI framework built from scratch in Python
Project description
Veska
A multi-agent AI framework built from scratch in Python. No LangChain, no CrewAI, no AutoGen — 100% custom-built for full control.
Install
pip install veska
Quick Start
from veska import Agent
agent = Agent(
name="assistant",
system_prompt="You are a helpful coding assistant.",
model="claude-sonnet-4-6",
)
result = agent.run("Explain what a decorator is in Python")
print(result.output)
Add Tools
from veska import Agent, tool
@tool
def get_weather(city: str):
return f"Weather in {city}: 72°F, sunny"
agent = Agent(
name="weather-bot",
system_prompt="You help users check the weather. Use the get_weather tool.",
model="claude-sonnet-4-6",
tools=[get_weather],
)
result = agent.run("What's the weather in Paris?")
print(result.output)
Structured Output
from veska import Agent
agent = Agent(
name="reviewer",
system_prompt="You review movies.",
model="claude-sonnet-4-6",
output_format={
"title": str,
"rating": float,
"recommend": bool,
}
)
result = agent.run("Review the movie Inception")
print(result.output["title"]) # "Inception"
print(result.output["rating"]) # 9.0
Streaming
result = agent.run("Write a haiku about coding", stream=True)
Multi-Agent System
from veska import Agent, Orchestrator
researcher = Agent(
name="researcher",
system_prompt="You research topics thoroughly.",
model="claude-sonnet-4-6",
)
writer = Agent(
name="writer",
system_prompt="You write clear, engaging content.",
model="claude-sonnet-4-6",
)
orchestrator = Orchestrator(
model="claude-sonnet-4-6",
agents=[researcher, writer],
tools=["file_manager"],
)
result = orchestrator.run("Write a blog post about AI agents")
print(result.results)
Per-Agent Models
researcher = Agent(name="researcher", model="claude-sonnet-4-6")
writer = Agent(name="writer", model="gpt-4o")
Features
- Multi-Agent Orchestration — Orchestrator breaks tasks into a dependency graph, runs them in parallel/sequential order
- Multi-Model Support — Claude and OpenAI, configurable per agent
- Unified Tool System — Pre-built, custom, and MCP tools. Just use
@tooldecorator - Streaming —
stream=Trueorstream=callback - Structured Output — Pass
output_formatdict, get validated responses - Memory System — Private memory per agent + shared memory pool
- 3-Level Error Recovery — Auto-retry, agent-level fix, discussion room
- Security Sandboxing — Agents sandboxed to their own territory
- Extended Thinking — Optional per-agent thinking support
- MCP Support — Connect external services via Model Context Protocol
- General Purpose — Not locked to any use case
Requirements
- Python 3.10+
anthropic,openai,pydantic
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
veska-0.1.0.tar.gz
(76.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
veska-0.1.0-py3-none-any.whl
(96.5 kB
view details)
File details
Details for the file veska-0.1.0.tar.gz.
File metadata
- Download URL: veska-0.1.0.tar.gz
- Upload date:
- Size: 76.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb6f0c0d91675e56171ba7baa3b77f7f68f61ca494509505060eb71915859193
|
|
| MD5 |
5ed9e490fb1b69f9ddc72bc28bad99a4
|
|
| BLAKE2b-256 |
87f56dd6a3b5725aec875f1635f6d7a5f6d82f9228629430a48807f532b4857b
|
File details
Details for the file veska-0.1.0-py3-none-any.whl.
File metadata
- Download URL: veska-0.1.0-py3-none-any.whl
- Upload date:
- Size: 96.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab3042604046c42130bf32d75d6ad0bccf0d9f7e4e98fdbf2ad0548ce658211
|
|
| MD5 |
b539ab9b786d1405666164ef270868e2
|
|
| BLAKE2b-256 |
8425991decc6b756a19c36dc6f3c1e37a6554a8bf491f95081fe0835ce1a75bd
|