見に /mi·ni/ — with intent to see 1
mi-ni is a template repository and library for doing AI research. Features:
- Local Python notebooks with Marimo, with outputs stored in Git LFS and published to GitHub Pages
- Remote GPU compute at the level of functions with Modal
- Agentic coding config for Claude Code and GH Copilot
More cool features
- Dev container for a consistent environment, both locally and in Codespaces
- ML stack (PyTorch, Pandas, etc.)
- Modern package management with uv
- Pre-configured for good engineering practices: tests, linting, type-checking (optional!)
First, open in GitHub Codespaces. Then:
./go install # CPU deps for local venv
./go auth # Authenticate with Modal for remote compute
uv run marimo edit docs/getting_started.py # Open the notebook in your browserFor a more complete example, have a look at the nanoGPT notebook.
Virtual environment
The Python environment is configured when the dev container is created.
Use uv to add and remove packages, and to run scripts:
uv add plotly --group local
uv run python example.pyNotebook output cleaning
A pre-commit hook runs scripts/clean_docs.py on staged Marimo outputs. It does two things:
-
Terminal sequences — collapses
\r/cursor-up/erase sequences that progress bars leave behind, keeping colour codes intact. -
Redaction — replaces patterns that shouldn't appear in published notebooks. By default, Modal app URLs are redacted (they expose your username and app IDs). Add your own patterns to the
REDACTlist at the top ofclean_docs.py:REDACT: list[tuple[re.Pattern, str]] = [ (re.compile(r'https://modal\.com/apps/\S+'), '[modal.com/apps/…]'), (re.compile(r'your-pattern'), '[replacement]'), ]
Working with large files (Git LFS)
This project is preconfigured to use Git LFS. If you commit a matching file, it won't clog up your main Git history. By default, files in docs/**/__marimo__/ are stored in LFS; see .gitattributes.
Typically, you would store data rather than code in LFS:
- training data
- model weights
- visualizations (images and video)
This project is dedicated to the public domain 2. In your own experiments, there's no need to contribute back! The code is yours to modify as you please.
If you do want to contribute to this template, then fork it as usual. Before making a pull request, run:
./go check