Skip to main content

Towards a cognitive agentic framework

Project description

Noesium Logo

Python PyPI version License GitHub Stars

Noesium is a computation-driven cognitive agentic framework providing foundational abstractions for building autonomous AI agents with planning, memory, tools, and orchestration capabilities.

Design Philosophy

Noesium is built on an Event-Sourced Multi-Agent Kernel Architecture that prioritizes durability, replayability, and distributed coordination. The core principles include:

Single Execution Authority

Each agent contains exactly one execution authority: the Agent Kernel. All reasoning, planning, branching, retries, tool invocation, and delegation logic occur inside this kernel. No external orchestration layer is permitted to mutate agent state.

Event-Sourced State

State is not stored as mutable objects. Instead, every state transition emits an event, the event log is the source of truth, and current state is a projection derived from event history. This ensures replayability, deterministic reconstruction, auditable cognition, and crash recovery.

Delegation via Events

Delegation is modeled as event emission, not direct invocation. An agent expresses intent by publishing a task event to a capability topic. Any agent subscribed to that topic may process the task, enforcing loose coupling and capability-based coordination.

Separation of Concerns

  • Cognition → Agent Kernel
  • Transport → Event Bus
  • Persistence → Event Store
  • Memory Projection → Projection Layer
  • Capability Routing → Topic Subscriptions

Architectural Goals

The system supports long-running autonomous agents, infinite reasoning loops, durable/resumable execution, distributed multi-agent collaboration, deterministic replayability, horizontal scalability, and explicit separation of cognition, transport, and persistence.

Installation

pip install -U noesium

Optional Dependencies

# Recommended: all features
pip install noesium[all]

# AI providers
pip install noesium[llm]             # OpenAI, LiteLLM, Instructor
pip install noesium[local-llm]       # Ollama, LlamaCPP
pip install noesium[ai-providers-all] # All AI providers

# Frameworks
pip install noesium[agents]          # LangChain + Bubus

# Tools & data
pip install noesium[tools]           # 17+ toolkits
pip install noesium[datascience]     # Pandas, NetworkX
pip install noesium[browser-use]     # Browser automation

Quick Start

LLM Client

from noesium.core.llm import get_llm_client

# Create client (supports openai, openrouter, ollama, llamacpp)
client = get_llm_client(provider="openai", api_key="sk-...")

# Chat completion
response = client.completion([{"role": "user", "content": "Hello!"}])

# Structured output
from pydantic import BaseModel

class Answer(BaseModel):
    text: str
    confidence: float

client = get_llm_client(provider="openai", structured_output=True)
result = client.structured_completion(messages, Answer)

Build an Agent

from noesium.core.agent.base import BaseGraphicAgent
from noesium.core.llm import get_llm_client

class MyAgent(BaseGraphicAgent):
    def __init__(self, llm_client=None):
        super().__init__(llm_client or get_llm_client())

    def build_graph(self):
        # Define your agent's workflow graph
        pass

agent = MyAgent()
result = await agent.run("What is the meaning of life?")

Use Toolkits

from noesium.core.toolify import get_toolkit, ToolkitConfig

# Search toolkit
search_config = ToolkitConfig(name="search", config={"SERPER_API_KEY": "..."})
search = get_toolkit("search", search_config)
results = await search.search_google_api("Python async programming")

# Bash toolkit
bash = get_toolkit("bash")
files = await bash.list_directory(".")

Core Modules

Module Description
Agents (noesium.core.agent) BaseAgent, BaseGraphicAgent, BaseHitlAgent, BaseResearcher
LLM (noesium.core.llm) Multi-provider support, structured output, token tracking
Toolify (noesium.core.toolify) Unified tool system with 17+ built-in toolkits
Memory (noesium.core.memory) Multi-tier memory with semantic search
Event (noesium.core.event) Domain events, message bus, tracing
Vector Store (noesium.core.vector_store) PGVector, Weaviate support

Built-in Agents

  • Noe - Autonomous research assistant with planning, execution, reflection cycles
  • BrowserUseAgent - Web automation with DOM interaction and code execution
  • TacitusAgent - Advanced research agent with iterative query generation, web search, reflection, and answer synthesis

Built-in Toolkits

Search, Bash, Memory, Python Executor, ArXiv, Audio, Document, File Edit, GitHub, Gmail, Image, Tabular Data, Video, Wikipedia, and more.

See AGENTS.md for detailed documentation.

Environment Variables

# LLM Provider
export NOESIUM_LLM_PROVIDER="openai"
export OPENAI_API_KEY="sk-..."

# Search
export SERPER_API_KEY="..."

Documentation

  • AGENTS.md - Detailed agent and toolkit documentation
  • specs/ - Design specifications (RFCs)
  • examples/ - Usage examples

License

MIT License

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

noesium-0.3.0.tar.gz (695.1 kB view details)

Uploaded Source

Built Distribution

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

noesium-0.3.0-py3-none-any.whl (853.8 kB view details)

Uploaded Python 3

File details

Details for the file noesium-0.3.0.tar.gz.

File metadata

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

File hashes

Hashes for noesium-0.3.0.tar.gz
Algorithm Hash digest
SHA256 eee6aa3ff39a90df83628f029e2b4cd838e374c47073da1c35ea3cd1ce8e76e0
MD5 09706fef5c7b5361a35ead6f60247b1c
BLAKE2b-256 901c3c66e051c8ef83b60b7324c017490c73f15ce63eab12ec91aaa1268afa91

See more details on using hashes here.

File details

Details for the file noesium-0.3.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for noesium-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe50e870406bd1795ef1a104fbe7f51d50b2cf6ed263de8b03369cfe10c62bcf
MD5 3bebf9e00aac33e35890eeefa06db41a
BLAKE2b-256 91514c78846f0289a8f0187ff9c9d1f357662cc0bd4858f52e75c29698dba9e6

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