Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Friday Agent Framework

Friday is a modular Python framework for building agents with conversation memory, model services, tools and workflows. Use Friday Chat for a terminal application, Friday Runtime to compose an embedded application, or individual packages for smaller integrations.

Current release: 0.1.0a4 (alpha) · Python: 3.13.4+ · License: MIT

Public APIs and configuration are still evolving. The implemented packages and their limits are described below; the Optimization namespace is scaffolding. Keep all Friday distributions on the same release version.

Install and choose a starting point

Create a virtual environment, then install the published application or framework:

python -m venv .venv
source .venv/bin/activate
python -m pip install "friday-chat==0.1.0a4"
friday-chat --help

On Windows, use .venv\Scripts\Activate.ps1 in PowerShell instead of the source command. The examples assume a compatible Python is already installed.

For framework development in your own application:

python -m pip install "friday-framework==0.1.0a4"

friday-framework is a metadata-only convenience distribution: import the member packages, not friday or friday_framework. Its default dependencies include the core framework and Chat. Install an individual distribution from the table below when you need only that surface.

Optional extras include mcp, speech, finance, sandbox, moltbook, optimization, documents, spreadsheets, langfuse and all. Select only what your application needs, for example python -m pip install "friday-framework[mcp]==0.1.0a4". Extras install dependencies; they do not configure credentials, start services, implement placeholder functionality, or complete the separately queued Langfuse backend.

Quick start: define and invoke a local tool

This complete example needs no model, credentials, network or persistent stores:

import asyncio
from friday_tools import FunctionTool

def greet(name: str) -> str:
    """Return a greeting."""
    return f"Hello, {name}!"

async def main() -> None:
    print(await FunctionTool(greet).execute(name="Friday"))

asyncio.run(main())

Expected output: Hello, Friday!.

For an interactive offline session, follow the Friday Chat quick start. To call actual models, configure the application's model/embedding services and environment credentials before selecting real mode. Chat defaults to a fake runtime for testing; a successful fake session does not verify a provider.

How the packages fit together

Application: Friday Chat or your own Python application
    RuntimeKernel: configuration, service ownership and lifecycle
        Agent / workflow -> LLM service and admitted tools
        Memory / context -> episodic, vector and graph adapters
        Transcript store -> conversation records and exports
        Telemetry sink -> configured events, spans and diagnostics

Packages expose public interfaces and typed models so applications can choose providers. The main integration layers are distinct:

  • Runtime composes services; Agent defines behavior and workflows.
  • Memory retrieves and assembles context; Transcript stores conversation records.
  • Tools supplies executable tools; MCP connects external tool peers or exposes explicitly registered tools.
  • CLI Components supplies terminal UI building blocks; Chat is the maintained terminal application.

Package map

The workspace contains the root friday-framework distribution and these 16 members:

Directory / README PyPI distribution Python import Purpose
friday-agent friday-framework-agent friday_agent Agent profiles, orchestration and workflows
friday-chat friday-chat friday_chat Terminal chat application
friday-cli friday-framework-cli friday_cli Reusable terminal components; historical executable is a placeholder
friday-core friday-framework-core friday_core Shared contracts, logging and security primitives
friday-finance friday-framework-finance friday_finance Massive financial-data client
friday-llm friday-framework-llm friday_llm Chat, embeddings and typed model requests
friday-mcp friday-framework-mcp friday_mcp MCP tools clients and programmatic servers
friday-memory friday-framework-memory friday_memory Memory, retrieval, context assembly and lifecycle
friday-moltbook friday-framework-moltbook friday_moltbook Typed Moltbook client
friday-optimization friday-framework-optimization friday_opt Experimental namespace; optimizer modules are placeholders
friday-runtime friday-framework-runtime friday_runtime Headless service composition and lifecycle
friday-sandbox friday-framework-sandbox friday_sandbox Execution backends and workspace ownership
friday-speech friday-framework-speech friday_speech Speech contracts, adapters and playback
friday-telemetry friday-framework-telemetry friday_telemetry Provider-neutral events, spans and optional exporters
friday-tools friday-framework-tools friday_tools Tool definitions, registries and integrations
friday-transcript friday-framework-transcript friday_transcript Conversation records, persistence and exports

Configuration and operational limits

Start from the examples packaged with the application you actually use. Friday Chat and headless Runtime have their own parsers; do not assume every YAML section or environment variable applies to every entry point. The model-library reference explains endpoint/model identity and credential references.

Keep provider keys in process environments or your secret-management system, never committed YAML. Chat does not implicitly load .env. Select writable application-owned state paths; memory stores and transcripts can contain private content. Examples that call providers or start execution backends must be explicitly provisioned and can consume quota or mutate state.

MCP is disabled by default. Its integrated clients support configured local stdio and explicitly admitted HTTPS Streamable HTTP peers; supported roles/revisions and limits are documented in the MCP README. Tools-profile support is not a claim of complete MCP conformance.

Telemetry is provider-neutral and application-selected. Closed LLM/MCP/execution event schemas exclude raw content, while generic events, legacy helpers and transcripts have different guarantees. OpenTelemetry export needs explicit assembly and configuration. The provider-neutral Langfuse implementation remains queued; installing the legacy optional integration is not its implementation.

Development

Clone the monorepo and install the shared workspace, optional integrations and development tools with uv:

git clone https://github.com/CIChuck/agent-framework.git
cd agent-framework
uv sync --all-packages --all-extras --group dev --python 3.13
uv run --no-sync python -c "from friday_runtime import RuntimeKernel; print('Friday imports OK')"

The checkout's .python-version selects Python 3.13; metadata enforces the 3.13.4 minimum. Each member has its own pyproject.toml, and the workspace shares uv.lock. Use a narrower package/extras selection when working without optional SDKs or integrations. Do not commit generated .venv, credentials or application data.

Run checks from the repository root:

uv run --no-sync pytest packages/friday-runtime/tests_runtime -q
uv run --no-sync ruff check .
uv run --no-sync mypy packages tests main.py

Package READMEs give their focused test path. uv run --no-sync pytest runs configured package/lab discovery; top-level integration suites are separate. Some integration/live suites need credentials, Docker, model services or existing fixtures: select them deliberately. Broad lint/type/test runs may expose existing debt; report it separately from new failures rather than weakening checks.

Before implementation, read AGENTS.md, the engineering policy and the development board. Changes follow the task/directive, independent validation and maintainer-acceptance workflow. A documentation page or queued task is not implementation authority.

Documentation, support and contributions

Older guides and design documents may describe historical or proposed behavior. The package metadata, public implementation and current task authority determine what is available now. The historical friday console entry point is a placeholder; use friday-chat for the terminal app. Root main.py is a smoke entry point.

License

MIT.

Metadata

Release files for friday-framework 0.1.0a4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for friday-framework 0.1.0a4
File Size Uploaded Provenance Actions
friday_framework-0.1.0a4.tar.gz 7.0 kB Without provenance Details for friday_framework-0.1.0a4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for friday-framework 0.1.0a4
File Interpreter ABI Platform Actions
friday_framework-0.1.0a4-py3-none-any.whl Python 3 none any Details for friday_framework-0.1.0a4-py3-none-any.whl

Total release size: 13.4 kB

Release files / friday_framework-0.1.0a4.tar.gz

Download URL friday_framework-0.1.0a4.tar.gz
Size 7.0 kB
Tags Source
SHA-256 checksum
How to use checksums
719b3f88d3cfd92411451848fb4cd1b05d66c92ea48ec61676139148f231fd39
BLAKE2b-256 checksum
How to use checksums
85bd9fb8fc01b6cfbf1056e15a5fd4fcd16c1ce3dc16ef8c1bb046b69e531977
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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}

Release files / friday_framework-0.1.0a4-py3-none-any.whl

Download URL friday_framework-0.1.0a4-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63b233f1ec42b072afbb2569e675dea6fbc2468d39872f70919be88ad2810a44
BLAKE2b-256 checksum
How to use checksums
bb9a6a50cf3bd551516290eb53c949657e9328778151bf0b7e92af97851292ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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}

Security for friday-framework 0.1.0a4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page