Skip to main content

Veska

CI

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_scanner tool
  • 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

veska-0.1.2.tar.gz (101.7 kB view details)

Uploaded Source

Built Distribution

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

veska-0.1.2-py3-none-any.whl (111.6 kB view details)

Uploaded Python 3

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

Hashes for veska-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d84a2b9d04e93288d72283544d18357668d0f11ee6fca2758b9c3ec4a3fe36e2
MD5 17d8660a72b756845243dfbbd7016b1a
BLAKE2b-256 cd4b0df13f84171ae41fa4c5cf56972160d588d20f764e1c4957e490b835e72b

See more details on using hashes here.

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

Hashes for veska-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f8683edd301a932eeb989dfc1b72261bf9c80cda0dabca775e94f8950d16f11b
MD5 d96be0cd51d774b5316860299de66591
BLAKE2b-256 077a176c9ad6f1187fd2c4454ef8b0a82976e37d2feb8d825c15b4e91eff69ea

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page