by jettyio
A Python-based service for managing ML model provenance and lineage, built with FastAPI and SQLAlchemy. Support for Croissant metadata validation.
Set up Environment Variables:
Create a .env
file in the project root by copying the example:
cp env.example .env
Start docker containers:
The bakery relies on a postgres database and Typesense for search. The MCP server makes REST calls to the API server, which then calls the persistence layer.
docker compose up -d
Run Database Migrations:
Apply the latest database schema using Alembic. uv run
executes commands within the project's managed environment.
docker compose exec db psql -U postgres -c "create DATABASE mlcbakery;" docker compose exec api alembic upgrade head
By default, the API will be available on localhost.
http://bakery.localhost/docs
http://bakery.localhost/redoc
http://mcp.localhost/mcp
(you may need to add this to your /etc/hosts
for local development)Clone the repository:
git clone git@github.com:jettyio/mlcbakery.git cd mlcbakery
Install Dependencies:
uv
uses pyproject.toml
to manage dependencies. It will automatically create a virtual environment if one doesn't exist.
curl -LsSf https://astral.sh/uv/install.sh | sh
pip install poetry uvicorn
uv run poetry install --no-interaction --no-ansi --no-root --with mcp
Start the FastAPI application using uvicorn:
# Make sure your .env file is present for the DATABASE_URL uv run uvicorn mlcbakery.main:app --reload --host 0.0.0.0 --port 8000
The Bakery is setup to authenticate requests with two methods: JWT Tokens and a "Master Admin Token". Both are configured in the ENV variables (.env file). Both JWT tokens and the Master Admin Token should be provided as "Bearer" Authorization header values.
The tests are configured to run against a PostgreSQL database defined by the DATABASE_URL
environment variable. You can use the same database as your development environment or configure a separate test database in your .env
file if preferred (adjust connection string as needed).
# Ensure DATABASE_URL is set in your environment or .env file uv run pytest
3 contributors