Skip to main content

fred-pod

What a Fred component needs to be a pod: configuration, identity, naming.

A Knowledge Base pod, a capability pod, an MCP server pod and an agent pod all read a configuration.yaml, get a machine-to-machine token, and name things under a prefix they own. That floor is this distribution.

Question Answer
What do I need to run a Fred component? fred-pod
What do I need to build an agent? fred-core / fred-sdk

Why it is its own distribution

fred-core declares 31 runtime dependencies — pandas, pyarrow, google-cloud-storage, minio, opensearch-py, sqlalchemy, asyncpg, azure-identity, fastapi, and a client for every LLM provider. That is the right list for the agents/LLM platform fred-core is. It is the wrong list for a pod whose job is one PROPFIND and a few GETs.

Extras were the obvious alternative and were rejected for one reason: a boundary the build does not enforce erodes. fred-core reached 31 dependencies precisely because nothing stopped it. Nothing would stop an import pandas landing in structures.py next month either, and nobody would notice. A separate distribution cannot import what it does not depend on — the rule keeps itself.

It showed its worth immediately: config_loader.py has always done import yaml, and fred-core never declared PyYAML. It worked because something else happened to pull it in. Here it is declared, because here it had to be.

The dependency list is the contract

pydantic   python-dotenv   pyyaml   httpx

Four packages. Adding a fifth is a decision someone makes on purpose, in a diff, and that is the whole point. If a change to this library needs a heavier import, the change belongs in fred-core, not here.

Layout

fred_pod/
├── common/
│   ├── naming.py          contributed names, prefixes, catalog ids
│   ├── structures.py      configuration models (scheduler, stores, KPI sinks)
│   ├── config_files.py    resolving configuration.yaml and its .env
│   └── config_loader.py   loading and validating it into a Pydantic model
└── security/
    ├── structure.py                security configuration models, KeycloakUser
    └── backend_to_backend_auth.py  M2M token provider and httpx auth

The paths mirror fred_core's on purpose: a call site migrates by swapping the prefix fred_core. → fred_pod. and nothing else.

Compatibility

fred-core depends on fred-pod and re-exports every name it moved, at both the package top level and the original submodule paths. Existing code keeps working unchanged; imports migrate opportunistically.

from fred_pod import ConfigFiles, KeycloakUser, M2MTokenProvider
from fred_pod.common.naming import require_contributed_name

Development

make dev            # install with the local monorepo checkout
make test           # offline unit tests
make code-quality   # ruff, bandit, detect-secrets, basedpyright
make publish        # build and upload to PyPI (needs PYPI_TOKEN)

Metadata

Release files for fred-pod 4.1.0

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

Source distribution (sdist)

Source distribution for fred-pod 4.1.0
File Size Uploaded
fred_pod-4.1.0.tar.gz 18.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fred-pod 4.1.0
File Interpreter ABI Platform
fred_pod-4.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.6 kB

Release files / fred_pod-4.1.0.tar.gz

Download URL fred_pod-4.1.0.tar.gz
Size 18.5 kB
Tags Source
SHA-256 checksum
How to use checksums
49d83f68aff180809c689cff4ff5f610bcac38a4257d8ace4c9a4b05b0c76f27
BLAKE2b-256 checksum
How to use checksums
765a85d5fa25b535cbe0245dba8c7baa93a96ad9ff9b563290041a24812b7581
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / fred_pod-4.1.0-py3-none-any.whl

Download URL fred_pod-4.1.0-py3-none-any.whl
Size 20.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9006cd3be0d8d8da5ff00ae1180a6388941efcb30ef0c5eecee437c5b5bc06e
BLAKE2b-256 checksum
How to use checksums
fa73fa6701d6c9b38397261f0a06ab2e23765b28efa258ee0a17d211f2f32ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

4.5.1

2 release files

4.5.0

2 release files

4.4.3

2 release files

4.4.2

2 release files

4.4.0

2 release files

4.3.0

2 release files

This release

4.1.0 This release

2 release files

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