Skip to main content

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 @tool decorator
  • Streamingstream=True or stream=callback
  • Structured Output — Pass output_format dict, 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


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)

Uploaded Source

Built Distribution

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

veska-0.1.0-py3-none-any.whl (96.5 kB view details)

Uploaded Python 3

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

Hashes for veska-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb6f0c0d91675e56171ba7baa3b77f7f68f61ca494509505060eb71915859193
MD5 5ed9e490fb1b69f9ddc72bc28bad99a4
BLAKE2b-256 87f56dd6a3b5725aec875f1635f6d7a5f6d82f9228629430a48807f532b4857b

See more details on using hashes here.

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

Hashes for veska-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9ab3042604046c42130bf32d75d6ad0bccf0d9f7e4e98fdbf2ad0548ce658211
MD5 b539ab9b786d1405666164ef270868e2
BLAKE2b-256 8425991decc6b756a19c36dc6f3c1e37a6554a8bf491f95081fe0835ce1a75bd

See more details on using hashes here.

Supported by

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