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
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.1.tar.gz
(81.1 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.1-py3-none-any.whl
(97.1 kB
view details)
File details
Details for the file veska-0.1.1.tar.gz.
File metadata
- Download URL: veska-0.1.1.tar.gz
- Upload date:
- Size: 81.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4601bca92cda922ef98eb570c2f37b306e007281449246d817362c827baf44f0
|
|
| MD5 |
70612ebe25bead4d68fdd8acddc04676
|
|
| BLAKE2b-256 |
e67e98af6fbf1931e2aadbae5046af463ac7d2d9b9ee421044ff0fb698af7c8d
|
File details
Details for the file veska-0.1.1-py3-none-any.whl.
File metadata
- Download URL: veska-0.1.1-py3-none-any.whl
- Upload date:
- Size: 97.1 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 |
1ed9f8c44995b8be90d565024f86884893679422afeb82f39fa65b95760c422b
|
|
| MD5 |
b9bed8e64f301071787b1b7a6e152a66
|
|
| BLAKE2b-256 |
29f766ecdcb78280b6f5f7b1e96ebb1609b2f83e962e884b2a294f0dba02960c
|