Metadata-Version: 2.4
Name: chefe
Version: 0.0.1
Summary: One manifest for every package manager | conda, PyPI, npm, cargo & more, behind a single file.
Project-URL: Homepage, https://github.com/phvv-me/chefe
Project-URL: Repository, https://github.com/phvv-me/chefe
Project-URL: Issues, https://github.com/phvv-me/chefe/issues
Author-email: Pedro Valois <contact@phvv.me>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: cargo,conda,monorepo,npm,package-manager,pixi,polyglot,pypi
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.11
Requires-Dist: cyclopts>=4
Requires-Dist: packaging>=24
Requires-Dist: plumbum>=1.8
Requires-Dist: pydantic>=2.7
Requires-Dist: rich>=13
Requires-Dist: tomlkit>=0.13
Requires-Dist: typing-extensions>=4.6
Provides-Extra: dev
Requires-Dist: dirty-equals>=0.8; extra == 'dev'
Requires-Dist: faker>=30; extra == 'dev'
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pyrefly>=1; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest-mock>=3.14; extra == 'dev'
Requires-Dist: pytest-subprocess>=1.5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: syrupy>=4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-llmstxt>=0.2; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Description-Content-Type: text/markdown

<div align="center">

<img src="docs/assets/logo.svg" width="148" alt="chefe logo, a domed serving cloche" />

# chefe

**One manifest for every package manager.** 🧑‍🍳

[![CI](https://github.com/phvv-me/chefe/actions/workflows/ci.yml/badge.svg)](https://github.com/phvv-me/chefe/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/chefe.svg?color=EAB308)](https://pypi.org/project/chefe/)
[![Docs](https://img.shields.io/badge/docs-phvv.me%2Fchefe-EAB308)](https://phvv.me/chefe)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)

</div>

> [!WARNING]
> **chefe is early (`0.0.x`).** The manifest and commands may still change.

## Installation

```sh
curl -fsSL https://phvv.me/chefe/install.sh | sh
```

This installs [pixi](https://pixi.sh) (the engine chefe compiles to) and chefe itself. Prefer the raw package? Use `pip install chefe` or `uv tool install chefe`.

## What it is

Conda, PyPI, npm, cargo. Real projects need several at once, scattered across `pixi.toml`, `package.json`, and `Cargo.toml`. chefe is the head chef. You write **one `chefe.toml`** recipe, chefe runs the line (pixi, npm, cargo) and plates a single environment. It never re-implements a solver. It runs the cooks.

```toml
[workspace]
name     = "my-project"
channels = ["conda-forge"]

[deps]                      # bare table is conda, the default source
python  = ">=3.11"
ripgrep = "*"

[pypi.deps]                 # resolved by pixi-via-uv, in the same env
torch = ">=2.6"

[cargo.deps]                # other ecosystems are explicit via [<eco>.deps]
bookokrat = "*"

[npm.deps]
prettier = ">=3"
```

## Usage

```sh
chefe init                 # scaffold a chefe.toml
chefe add ripgrep          # add deps, use --pypi / --cargo / --npm for others
chefe install              # provision every ecosystem at once
chefe tree                 # what's declared vs installed, per ecosystem
```

> [!TIP]
> Run `chefe tree` anytime to see declared vs installed across every ecosystem at a glance. ✅

> [!NOTE]
> Full documentation lives at **[phvv.me/chefe](https://phvv.me/chefe)**.

## Lore

A head chef never cooks every dish alone. They write the recipe and run the line, and the cooks each work their station. chefe does the same for your dependencies. One recipe in, one plated environment out, with pixi, npm, and cargo working the stations. 🧑‍🍳
