Veska
Veska is a Python framework for building agent and multi-agent workflows with tools, MCP, logging, cost tracking, recovery, and security controls.
Install
pip install veska
Quick Start
from veska import Agent, Orchestrator
frontend = Agent(
name="frontend",
system_prompt="Build frontend UI.",
model="gpt-4o",
tools=["file_manager"],
)
backend = Agent(
name="backend",
system_prompt="Build backend APIs.",
model="gpt-4o",
tools=["file_manager", "code_runner"],
)
orchestrator = Orchestrator(
model="gpt-4o",
agents=[frontend, backend],
)
result = orchestrator.run("Build a small blog app")
print(result.results)
Tools
Tools passed to an agent belong to that agent:
agent = Agent(
model="gpt-4o",
tools=["file_manager", "code_runner", "code_scanner"],
)
Tools passed to the orchestrator stay with the orchestrator by default:
orchestrator = Orchestrator(
model="gpt-4o",
tools=["code_scanner"],
)
To share orchestrator tools and orchestrator MCP tools with agents:
orchestrator = Orchestrator(
tools=["code_scanner"],
mcp_servers=[github],
share_tools_with_agents=True,
)
MCP
MCP can be connected directly to an agent or to the orchestrator:
from veska import MCPServer
github = MCPServer(
name="github",
command="npx",
args=["-y", "@modelcontextprotocol/server-github"],
env={"GITHUB_TOKEN": "..."},
)
agent = Agent(model="gpt-4o", mcp_servers=[github])
orchestrator = Orchestrator(model="gpt-4o", mcp_servers=[github])
Logging And Cost Tracking
Logging and cost tracking are explicit objects:
from veska import CostTracker, Logger
logger = Logger(enabled=True)
cost_tracker = CostTracker(enabled=True)
orchestrator = Orchestrator(
model="gpt-4o",
logger=logger,
cost_tracker=cost_tracker,
)
Recovery
Use recovery when workflows should continue after interruption:
from veska import RecoveryManager
recovery = RecoveryManager(enabled=True)
orchestrator = Orchestrator(
model="gpt-4o",
agents=[frontend, backend],
recovery=recovery,
)
result = orchestrator.run_or_resume("Build a small blog app")
Security
Security protects project boundaries and guards built-in file/command tools:
orchestrator = Orchestrator(
model="gpt-4o",
agents=[frontend, backend],
security={"enabled": True, "project_root": "/path/to/project"},
)
Territories are optional. Use them only when agents should be limited to separate folders.
Media
Agents can receive attachments:
from veska import Audio, Image, PDF
result = agent.run(
"Answer using these files",
attachments=[Audio("voice.mp3"), Image("screen.png"), PDF("brief.pdf")],
)
Audio is sent only through the selected provider/model. If that model does not support raw audio, Veska returns an error before calling the provider.
Features
- Multi-agent orchestration with dependency-aware task execution
- Agent-level and orchestrator-level tools
- Agent-level and orchestrator-level MCP
- Optional structured logging and cost tracking
- Recovery savepoints with
run_or_resume - Security sandbox for built-in file and command tools
- Optional built-in
code_scannertool - Image, PDF, and audio attachments
- Structured output, streaming, memory, and thinking support
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
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
File details
Details for the file veska-0.1.2.tar.gz.
File metadata
- Download URL: veska-0.1.2.tar.gz
- Upload date:
- Size: 101.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d84a2b9d04e93288d72283544d18357668d0f11ee6fca2758b9c3ec4a3fe36e2
|
|
| MD5 |
17d8660a72b756845243dfbbd7016b1a
|
|
| BLAKE2b-256 |
cd4b0df13f84171ae41fa4c5cf56972160d588d20f764e1c4957e490b835e72b
|
File details
Details for the file veska-0.1.2-py3-none-any.whl.
File metadata
- Download URL: veska-0.1.2-py3-none-any.whl
- Upload date:
- Size: 111.6 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 |
f8683edd301a932eeb989dfc1b72261bf9c80cda0dabca775e94f8950d16f11b
|
|
| MD5 |
d96be0cd51d774b5316860299de66591
|
|
| BLAKE2b-256 |
077a176c9ad6f1187fd2c4454ef8b0a82976e37d2feb8d825c15b4e91eff69ea
|