fetch_ml/cli/README.md
Jeremie Fraeys ea15af1833 Fix multi-user authentication and clean up debug code
- Fix YAML tags in auth config struct (json -> yaml)
- Update CLI configs to use pre-hashed API keys
- Remove double hashing in WebSocket client
- Fix port mapping (9102 -> 9103) in CLI commands
- Update permission keys to use jobs:read, jobs:create, etc.
- Clean up all debug logging from CLI and server
- All user roles now authenticate correctly:
  * Admin: Can queue jobs and see all jobs
  * Researcher: Can queue jobs and see own jobs
  * Analyst: Can see status (read-only access)

Multi-user authentication is now fully functional.
2025-12-06 12:35:32 -05:00

70 lines
1.7 KiB
Markdown

# ML CLI
Fast CLI tool for managing ML experiments.
## Quick Start
```bash
# 1. Build
zig build
# 2. Setup configuration
./zig-out/bin/ml init
# 3. Run experiment
./zig-out/bin/ml sync ./my-experiment --queue
```
## Commands
- `ml init` - Setup configuration
- `ml sync <path>` - Sync project to server
- `ml queue <job1> [job2 ...] [--commit <id>] [--priority N]` - Queue one or more jobs
- `ml status` - Check system/queue status for your API key
- `ml monitor` - Launch monitoring interface (TUI)
- `ml cancel <job>` - Cancel a running/queued job you own
- `ml prune --keep N` - Keep N recent experiments
- `ml watch <path>` - Auto-sync directory
- `ml experiment log|show|list|delete` - Manage experiments and metrics
### Experiment workflow (minimal)
- `ml sync ./my-experiment --queue`
Syncs files, computes a unique commit ID for the directory, and queues a job.
- `ml queue my-job`
Queues a job named `my-job`. If `--commit` is omitted, the CLI generates a random commit ID
and records `(job_name, commit_id)` in `~/.ml/history.log` so you don't have to remember hashes.
- `ml experiment list`
Shows recent experiments from history with alias (job name) and commit ID.
- `ml experiment delete <alias|commit>`
Cancels a running/queued experiment by job name, full commit ID, or short commit prefix.
## Configuration
Create `~/.ml/config.toml`:
```toml
worker_host = "worker.local"
worker_user = "mluser"
worker_base = "/data/ml-experiments"
worker_port = 22
api_key = "your-api-key"
```
## Install
```bash
# Install to system
make install
# Or copy binary manually
cp zig-out/bin/ml /usr/local/bin/
```
## Need Help?
- `ml --help` - Show command help
- `ml <command> --help` - Show command-specific help