Skip to main content

coreouto

coreouto

A minimal, extensible agent library for Python.

Built on five philosophies: minimalism, extensibility, explicitness, fragmentation, conciseness.

The whole library reduces to one idea: an agent is called with a message, runs an internal loop, and returns its response when the model calls the finish tool — the content argument of the finish call becomes the final answer. If the model's turn ends without a finish call (the model "thinks it's done" but didn't say so explicitly), the loop injects a confirmation user message and re-prompts; the model's next turn either calls finish (terminate) or calls more tools (continue). Unrecoverable provider terminations (token cap, refusal, content filter, server-side failure) still end the loop without finish. To output text without ending the loop (e.g. share progress before calling more tools), the model calls the continue_loop tool. Everything else — providers, tools, presets, hooks, multi-agent — is an opt-in extension.

import os

import coreouto as co
from coreouto.providers.openai import OpenAIProvider

@co.register_tool("search")
def search(query: str) -> str:
    """Search the web for `query`."""
    return f"<results for {query}>"

co.register_provider("minimax", OpenAIProvider(
    api_key=os.environ["MINIMAX_API_KEY"],
    base_url="https://api.minimax.io/v1",
))

preset = co.register_agent_preset(
    "researcher", model="MiniMax-M3", provider="minimax",
    system_prompt="You are a research assistant.",
    tools=["search"],
)
response = co.Agent(preset.to_config()).call_sync("Find me recent news about fusion energy.")
print(response.content)

Install

pip install coreouto
# with providers
pip install coreouto[openai]
pip install coreouto[anthropic]
pip install coreouto[google]
pip install coreouto[all]

Documentation

See docs/ for the full documentation set:

License

Apache 2.0 — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coreouto-0.7.3.tar.gz (95.4 kB view details)

Uploaded Source

Built Distribution

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

coreouto-0.7.3-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file coreouto-0.7.3.tar.gz.

File metadata

  • Download URL: coreouto-0.7.3.tar.gz
  • Upload date:
  • Size: 95.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coreouto-0.7.3.tar.gz
Algorithm Hash digest
SHA256 a350dd04e419d6f0608a8b0e0517689aca4d78fe02c861e7f9dffaceb07fced8
MD5 5adb07c252ff04c73075ed554a4a4ad9
BLAKE2b-256 bbde48403b4127d5609ab9aab5a77b6cd9dd69533da7aaa56d7a6aeea7f7f382

See more details on using hashes here.

Provenance

The following attestation bundles were made for coreouto-0.7.3.tar.gz:

Publisher: publish.yml on llaa33219/coreouto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coreouto-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: coreouto-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 35.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coreouto-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 60dd51cee6c079f7f724b95be7c8afaa733cf9f8d7f4eb078485a37445039762
MD5 47d55fb6e275d4bc64bd87bba505ac7a
BLAKE2b-256 ffe5d4f117fc1d1fd616e9b115b994ce66aac80c626bd5cc5eaa66b63e6600ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for coreouto-0.7.3-py3-none-any.whl:

Publisher: publish.yml on llaa33219/coreouto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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