Skip to main content

A production-ready framework for building safe, capable, and observable AI agents with native connector integrations.

Project description

๐ŸŒŸ Pycelest โ€” AI Agent Framework

Build ยท Orchestrate ยท Defend A production-ready framework for building safe, capable, and observable AI agents.

PyPI version Python 3.11+ License: MIT Code style: ruff


What is Pycelest?

Pycelest is a Python framework for building AI agents that are safe, capable, and observable โ€” designed from day one for production deployment, not just research.

Unlike frameworks that bolt guardrails on as an afterthought, Pycelest puts security, traceability, and reliability at the center of its architecture.


Features

Feature Description
๐Ÿ” ReAct Loop Native Reasoning + Acting loop at the core
๐ŸŒ Multi-Provider OpenAI, Anthropic, Google, Mistral, DeepSeek, Grok โ€” one interface
๐Ÿ  Local Models Ollama, LM Studio, vLLM โ€” no API key needed
๐Ÿง  Memory STM, Scratchpad, RAG, and automatic compression
๐Ÿ›ก๏ธ Guardrails Built-in Tool Firewall and Execution Budget
๐Ÿ‘ฅ Multi-Agent Native agent collaboration via AgentBus
๐Ÿ“ก Streaming First-class async streaming from all providers
๐Ÿ”ญ Observability OpenTelemetry traces, metrics, and structured logs
๐Ÿ”Œ Plugin System Lifecycle hooks for extending behavior
โš™๏ธ YAML Config Code or YAML โ€” your choice
๐Ÿ”ง MCP Support Connect external tool servers via Model Context Protocol

Installation

pip install pycelest

# With specific provider
pip install pycelest[openai]      # OpenAI, Google, DeepSeek, Grok, Mistral
pip install pycelest[anthropic]   # Anthropic Claude

# Local models โ€” no API key needed
# Install Ollama from https://ollama.com, then:
# ollama pull llama3.2

# Everything
pip install pycelest[all]

Quick Start

from celest import SessionManager, SessionConfig
from celest.providers import OpenAIAdapter

config = SessionConfig(
    system_prompt="You are a helpful, careful AI agent",
    max_iterations=8,
    max_tool_executions=10,
    token_budget=12_000,
)

session = SessionManager(
    config=config,
    provider=OpenAIAdapter(model="gpt-4o"),
)

result = await session.run("Plan a 3-day trip to Kyoto")
print(result.response)

Local Models (no API key)

from celest.providers import OllamaAdapter

session = SessionManager(
    config=config,
    provider=OllamaAdapter(model="llama3.2"),  # or mistral, phi3, qwen2.5...
)

With Tools

from celest.tools import FunctionTool

@FunctionTool.register(description="Search the web for current information")
async def web_search(query: str) -> str:
    # your implementation
    ...

session = SessionManager(config=config, provider=provider, tools=[web_search])
result = await session.run("What are the latest AI news?")

With YAML Config

# celest.yaml
system_prompt: "You are a helpful AI agent"
max_iterations: 8
provider: openai      # openai | anthropic | ollama | lmstudio | deepseek | grok | mistral
model: gpt-4o
guardrails:
  tool_firewall: ask  # accept | deny | ask
from celest import SessionManager

session = SessionManager.from_yaml("celest.yaml")
result = await session.run("Your task here")

CLI

celest init                          # Generate a starter celest.yaml
celest run celest.yaml "Your prompt" # Run an agent from config

Multi-Agent

from celest.multi import AgentBus

bus = AgentBus()
researcher = SessionManager(config=research_config, provider=provider, bus=bus)
writer = SessionManager(config=write_config, provider=provider, bus=bus)

result = await researcher.run("Research and write a report on AI trends")

Architecture

User Input
    โ”‚
    โ–ผ
[Optional: PlanningModule] โ”€โ”€โ–บ Goal decomposition + SkillRegistry
    โ”‚
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         SessionManager              โ”‚
โ”‚         (ReAct Loop)                โ”‚
โ”‚                                     โ”‚
โ”‚  ConversationHistory  MemoryManager โ”‚
โ”‚  ToolRegistry         RAGAdapter    โ”‚
โ”‚  PlanningModule       Logger        โ”‚
โ”‚  Compression          ExecBudget    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
       โ–ผ                โ–ผ
  ProviderAdapter   ToolFirewall
  (LLM API)         (Guardrails)

Roadmap

  • Project scaffold & specification
  • Phase 1 โ€” Core: SessionManager, ReAct loop, ProviderAdapters, FunctionTool, Guardrails
  • Phase 2 โ€” Memory: STM, Scratchpad, RAG, Compression, Streaming, OpenTelemetry
  • Phase 3 โ€” Advanced: Plugin system, AgentBus, PlanningModule, MCP, CLI, Local models

Contributing

Contributions are welcome! Please open an issue or submit a PR on GitHub.


License

MIT ยฉ Celestin

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

pycelest-0.4.0.tar.gz (611.7 kB view details)

Uploaded Source

Built Distribution

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

pycelest-0.4.0-py3-none-any.whl (68.3 kB view details)

Uploaded Python 3

File details

Details for the file pycelest-0.4.0.tar.gz.

File metadata

  • Download URL: pycelest-0.4.0.tar.gz
  • Upload date:
  • Size: 611.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pycelest-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6a1f62175c30dea57d24df14a77d68ef2fb2ff963e5fa893cdecf5517c1bd398
MD5 6afd5c76d8b213d7859fd2196fd4c6c4
BLAKE2b-256 f6e66f4d6c06f52ed50334d6e16140a7d24ab7e1328d033ed60ab795d57baa5b

See more details on using hashes here.

File details

Details for the file pycelest-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pycelest-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 68.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pycelest-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e6d8174bb565e83a65c52e528e5fd049a323d8751219ec47ae615516eb2359d6
MD5 254bedb9899bc337f3aac5e8f1bc52c7
BLAKE2b-256 3ad8bcb929ea0758476bc250518882c26bedfb11c273a7120a85a73bfb02b086

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