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
- Documentation index: guides and deeper topics; consult current package READMEs and metadata for entry points.
- Model library, MCP client, MCP server, MCP migration, speech.
- Report issues or request features: include the Friday/Python versions, affected package, minimal reproduction and sanitized diagnostics.
- Contributing guide: read alongside current repository policy. Keep pull requests scoped and include validation and migration implications.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.