Self-hosted AI development manager for GPU job execution on your own servers
Project description
mikon
日本語版: README-ja.md
A self-hosted tool for managing AI development (training and evaluation jobs) on GPU servers from a browser.
Write Python the way you normally would, and just add a decorator to your functions. mikon automatically discovers your jobs, generates config forms, allocates GPUs, launches runs, and displays metrics, logs, and artifacts in real time.
Features
- Decorator-only discovery — Just add
@mikon.job. No registration step, no code changes required. - Auto-generated config UI — Pydantic fields on
class Config(mikon.Config)become form widgets automatically (sliders, selects, checkboxes, etc.) - NVIDIA and AMD support — Specify GPUs in unified
nvidia:0/amd:0format.CUDA_VISIBLE_DEVICES/ROCR_VISIBLE_DEVICESare set automatically. - Live monitoring — Metric charts and log streams update every few seconds via SSE.
- Artifact management — Call
ctx.log_artifact()to make files downloadable from the browser. - Lineage tracking —
ctx.use_dataset()/ctx.use_artifact()automatically build an upstream/downstream graph. - Module system — Register swappable components with
@mikon.module; the UI generates a module-selection form automatically. - Dataset management — Register existing paths or create datasets with a builder function.
- Document viewer — Markdown, Typst, and TypMark files placed in
docs/are viewable in the dashboard. - File-based persistence — No SQL database required. Everything is stored as text files under
.mikon/. - Independent processes — Jobs keep running even if the dashboard is restarted.
Requirements
- Python 3.11+
- GPU server with NVIDIA drivers or AMD ROCm installed
typstCLI (optional, for Typst document rendering)typmark-cliCLI (optional, for TypMark document rendering)
Quick Start
# Install
uv tool install mikon # or: pip install mikon
# Initialize project
mikon init
# src/train.py
import mikon
from mikon import Config, RunContext
from pydantic import Field
from typing import Literal
class TrainConfig(Config):
lr: float = Field(1e-3, gt=0, le=1)
epochs: int = Field(10, ge=1, le=1000)
optimizer: Literal["adam", "sgd"] = "adam"
@mikon.job
def train(config: TrainConfig, ctx: RunContext) -> None:
for epoch in range(config.epochs):
loss = 1.0 / (epoch + 1)
ctx.log_metric("loss", loss, step=epoch)
# Start the server on the GPU machine
mikon serve
# Launch a job from the CLI
mikon run train --gpu nvidia:0
# Access the dashboard from your local machine via SSH port forwarding
ssh -L 8000:localhost:8000 you@gpu-server
# → Open http://localhost:8000 in your browser
Installation
uv tool install mikon # recommended
pip install mikon
Dependencies (pynvml, psutil, watchfiles, fastapi, etc.) are installed automatically.
Documentation
For the full usage guide, SDK reference, CLI options, and API error model, see USAGE.md.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mikon-0.0.8.tar.gz.
File metadata
- Download URL: mikon-0.0.8.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5fa7d2cd205a3a620a011d2fdc809a33d2ce047a2a8cdfbbd24771c79c3566d
|
|
| MD5 |
532fba1a2a6733382f89b0ad93eff70b
|
|
| BLAKE2b-256 |
6f2218bdc8f287cfe44705487839f538f0ade052240e556cac0fca69f0d36a0a
|
Provenance
The following attestation bundles were made for mikon-0.0.8.tar.gz:
Publisher:
publish.yml on miko-misa/mikon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikon-0.0.8.tar.gz -
Subject digest:
b5fa7d2cd205a3a620a011d2fdc809a33d2ce047a2a8cdfbbd24771c79c3566d - Sigstore transparency entry: 2068682163
- Sigstore integration time:
-
Permalink:
miko-misa/mikon@ac5f59ffd58236a3778e90b1c88418b9419c1284 -
Branch / Tag:
refs/tags/v0.0.8 - Owner: https://github.com/miko-misa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac5f59ffd58236a3778e90b1c88418b9419c1284 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mikon-0.0.8-py3-none-any.whl.
File metadata
- Download URL: mikon-0.0.8-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33424f84b4c0a2af3aa6ecfd0c01222ac5166ddc60b37a1a0dd80b009da28b07
|
|
| MD5 |
95d969b064350910d7f67021d4a59223
|
|
| BLAKE2b-256 |
0c55bc132e9f4885e95d96fa2a693a321fa35670d7dad9afae7865588d724585
|
Provenance
The following attestation bundles were made for mikon-0.0.8-py3-none-any.whl:
Publisher:
publish.yml on miko-misa/mikon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikon-0.0.8-py3-none-any.whl -
Subject digest:
33424f84b4c0a2af3aa6ecfd0c01222ac5166ddc60b37a1a0dd80b009da28b07 - Sigstore transparency entry: 2068682225
- Sigstore integration time:
-
Permalink:
miko-misa/mikon@ac5f59ffd58236a3778e90b1c88418b9419c1284 -
Branch / Tag:
refs/tags/v0.0.8 - Owner: https://github.com/miko-misa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac5f59ffd58236a3778e90b1c88418b9419c1284 -
Trigger Event:
push
-
Statement type: