Metadata-Version: 2.4
Name: dentate
Version: 0.4.1
Summary: Dentate — RLVR + distillation for small models: SFT → support gate → GRPO → frozen eval, with the Spiral looped transformer demo
Author-email: Marius-Constantin Dinu <dinu.marius.constantin@gmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://dentate.cortex.a2olabs.com
Project-URL: Bootcamp, https://github.com/Xpitfire/dentate-bootcamp
Project-URL: Colab, https://colab.research.google.com/github/Xpitfire/dentate-bootcamp/blob/main/dentate_bootcamp.ipynb
Project-URL: Downloads, https://github.com/Xpitfire/dentate-bootcamp/releases/latest
Project-URL: Issues, https://github.com/Xpitfire/dentate-bootcamp/issues
Keywords: reinforcement-learning,rlvr,grpo,distillation,small-language-models,spiral,bootcamp
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: dentate/demo/NOTICE
Requires-Dist: pyyaml
Requires-Dist: httpx<1,>=0.27
Provides-Extra: serve
Requires-Dist: fastapi<1,>=0.115; extra == "serve"
Requires-Dist: uvicorn<1,>=0.30; extra == "serve"
Requires-Dist: websockets<16,>=13; extra == "serve"
Requires-Dist: pydantic<3,>=2.9; extra == "serve"
Requires-Dist: httpx<1,>=0.27; extra == "serve"
Requires-Dist: PyJWT[crypto]<3,>=2.9; extra == "serve"
Requires-Dist: python-multipart; extra == "serve"
Requires-Dist: a2o-cortex>=0.2.7; python_version >= "3.12" and extra == "serve"
Provides-Extra: demo
Requires-Dist: dentate[serve]; extra == "demo"
Requires-Dist: torch<3,>=2.6; extra == "demo"
Requires-Dist: transformers<6,>=4.46; extra == "demo"
Requires-Dist: numpy<3,>=1.26; extra == "demo"
Requires-Dist: spiral-lm<0.2,>=0.1.1; extra == "demo"
Requires-Dist: a2o-cortex>=0.2.7; python_version >= "3.12" and extra == "demo"
Provides-Extra: bootcamp
Requires-Dist: dentate[demo]; extra == "bootcamp"
Provides-Extra: bootcamp-web
Requires-Dist: dentate[serve]; extra == "bootcamp-web"
Provides-Extra: api
Requires-Dist: dentate[serve]; extra == "api"
Provides-Extra: mlx
Requires-Dist: mlx; extra == "mlx"
Requires-Dist: mlx-lm; extra == "mlx"
Requires-Dist: mlx-lm-lora; extra == "mlx"
Provides-Extra: cuda
Requires-Dist: torch>=2.6; extra == "cuda"
Requires-Dist: transformers; extra == "cuda"
Requires-Dist: peft; extra == "cuda"
Requires-Dist: trl; extra == "cuda"
Requires-Dist: datasets; extra == "cuda"
Requires-Dist: verl; extra == "cuda"
Provides-Extra: wandb
Requires-Dist: wandb; extra == "wandb"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: playwright; extra == "dev"
Requires-Dist: pytest-playwright; extra == "dev"
Requires-Dist: httpx; extra == "dev"
Requires-Dist: fastapi; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: websockets; extra == "dev"
Requires-Dist: python-multipart; extra == "dev"
Requires-Dist: PyJWT[crypto]; extra == "dev"
Requires-Dist: numpy; extra == "dev"
Requires-Dist: torch>=2.6; extra == "dev"
Requires-Dist: transformers; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: nbformat; extra == "dev"
Dynamic: license-file

# Dentate

Verify before you reward. Dentate fine-tunes a small model on a verifiable task family, measures whether it can
already produce checkable answers, and runs GRPO only when that measurement says a reward exists. Each run ends
with a held-out score and the verdict behind it. Any architecture registered with Dentate runs through the same
pipeline; the demo ships Spiral, a small looped transformer, as the reference.

```
pip install "dentate[demo]"
dentate demo init && dentate demo run
dentate serve
```

Python 3.11+. Nothing downloads after the install: the wheel bundles the starter project, a pinned SmolLM tokenizer
and the built web app. No model weights, teacher or oracle are fetched.

- Colab: https://colab.research.google.com/github/Xpitfire/dentate-bootcamp/blob/main/dentate_bootcamp.ipynb
- CLI bundles (no Python needed): https://github.com/Xpitfire/dentate-bootcamp/releases/latest
- Hosted site (papers, docs and public results without an account; sign in to run experiments):
  https://dentate.cortex.a2olabs.com
- Student guide: https://github.com/Xpitfire/dentate-bootcamp/blob/main/BOOTCAMP.md

Result packages (`result.dentate`) contain configuration, metrics, provenance and checkpoints; editable projects
(`.dentate`) contain configuration only. A failed support gate is a reported result, not an error.
