Skip to content

z0u/mi-ni

Repository files navigation

/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

Open in GitHub Codespaces

 

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!)

 

Getting started

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 browser

For 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.py
Notebook 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 REDACT list at the top of clean_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)

 

Contributing & licence

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

Footnotes

  1. From 見に行く (mi-ni iku), meaning "to go for the purpose of seeing something."

  2. Technically, the licence is the Unlicense, which is about as close as you can get to "do whatever you want".

About

Template project for AI experiments

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages