Just shipped my first ever CLI tool — and published it to PyPI. pip install mlx-tracker Here's the full story of what I built, what I learned, and why I built it 👇 --- What is mlx? mlx is a local ML experiment tracker that lives entirely in your terminal. No cloud. No server. No account. Just install and track. Every time you train a model you can now do this: mlx run start --name "catboost-v1" python train.py mlx run stop mlx compare catboost-v1 catboost-v2 And instantly see which model won — and exactly why. --- Tech Stack - Python — core language - Typer — turns Python functions into CLI commands - Rich — beautiful terminal output (tables, panels, colors) - SQLModel — SQLite database with Python classes (zero setup) - TOML — config file management - pytest — 38 automated tests, 95% coverage - GitHub Actions — CI on every push + auto publish to PyPI - Hatchling — modern Python packaging --- What I actually built The architecture has 3 clean layers: - Commands layer — what the user types (Typer CLI) - Core layer — business logic (Managers for Run, Metric, Param) - Storage layer — SQLite database + filesystem Commands never touch the database directly. Core handles everything in between. Clean separation of concerns. --- Commands shipped: - mlx init — set up any ML project - mlx run start/stop — track training sessions - mlx log metric/param/note — log everything - mlx ls — see all runs in a table - mlx status — inspect any run in detail - mlx compare — side by side diff of two runs - mlx export — save to CSV or JSON --- Things I learned building this 1. How Python packages actually work — pyproject.toml, entry points, editable installs 2. The 3-layer architecture pattern — separating CLI, logic, and storage makes code actually maintainable 3. pytest from scratch — fixtures, conftest.py, CliRunner, coverage reports 4. How PyPI publishing works end to end — build, twine, API tokens, GitHub Actions 5. Writing a CLI that feels good to use — silent logging, clear error messages, helpful next steps --- Tested with real models I tracked real CatBoost training runs during development. Two models, different hyperparameters, side by side comparison in one command. This is what MLflow and Weights & Biases charge money for. I built it locally in pure Python. --- - I recorded a full demo video showing mlx working live — tracking a CatBoost fraud detection model from init to compare. --- This is my first CLI based project and first open source package on PyPI. If you work with ML models and hate losing track of your experiments — give it a try: pip install mlx-tracker Feedback, stars, and contributions welcome GitHub:https://lnkd.in/gjEh4aUv PyPI: https://lnkd.in/gr2M7tZn #Python #MachineLearning #MLOps #OpenSource #CLI #PyPI #buildinpublic #100DaysOfCode

To view or add a comment, sign in

Explore content categories