local-api SKILL.md skillB
local-api from smol-machines/smolvm is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add smol-machines/smolvm/local-api@git:20261016.432b170Pins git:20261016.432b170 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- B, 16 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- smol-machines/smolvm
- Path
docs/local-api/SKILL.md- Versions recorded
- 4
- Latest version
- git:20261016.432b170, committed Oct 16, 2026
- First version recorded
- Oct 6, 2026
- Size
- 15,668 bytes
- Repository stars
- 6,776
- License
- Apache-2.0
Drives smolvm programmatically over its local HTTP API (smolvm serve) instead of the CLI: create machines, exec and stream commands, move files in and out, and tear them down. Use when building a client, harness, agent tool or MCP backend over smolvm; when a create call is accepted but the machine behaves as if a field was ignored; when a file uploaded over the API has disappeared; when an exec that failed still returned HTTP 200; or when choosing between the Unix socket and loopback TCP. Do…
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Driving smolvm over HTTP Verified on **smolvm v1.29.0** on macOS arm64, 2026-10-15, and on **v1.18.2** on Linux aarch64, 2026-09-24. Done means a machine went through its whole lifecycle over HTTP and `GET /api/v1/machines/<name>` answers `NOT_FOUND` at the end. The Linux runs used the scripts of their date; this version's preflight and cleanup scripts ran on Linux aarch64 on v1.22.2 on 2026-10-03. Two rules run through everything here, and both are the same shape: **a 200 is not a result.** 1. **A failing guest command still returns HTTP 200.** Assert `exitCode` from the body. 2. **Upload files only after the workload container is running.** An upload before that returns 200 with the resolved path and byte count for a file that is then unreadable. ## Procedure **1. Preflight.** ```bash scripts/preflight.sh ``` It reports `auth=none_unless_mtls`, which is not a warning about your setup: a server started the way this packet starts it has no TLS, token or auth of any kind, so **the transport you pick is the access control**. Mutual TLS exists, configured from the environment rather than by a flag; …
Read the whole file at its exact version.
How to install
mdr add smol-machines/smolvm/local-api@sha256:5b735a19fe9c2c71The line at the top of this page pins the label git:20261016.432b170, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_ccobov7vhuqlkw7d)
1 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 4 versions of this file, between Oct 6, 2026 and Oct 16, 2026, about one every 3 days.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20261016.432b170 latest | 2026-10-16 | 432b170 | 15,668 B | B | view · diff |
| git:20261015.f515faa | 2026-10-15 | f515faa | 15,125 B | B | view · diff |
| git:20261014.8cf0601 | 2026-10-14 | 8cf0601 | 15,089 B | B | view · diff |
| git:20261006.333fd5c | 2026-10-06 | 333fd5c | 14,616 B | B | view |
Audit of the latest version
- fail: No link to a raw IP address (matched: http://127.0.0.1:8899)
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (15668 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No script tag
Starting a new one? Use a template for SKILL.md on mdpantry, which passes every one of these checks and says what to change in it.
Source
smol-machines/smolvm · 6,776 stars · license Apache-2.0 · pushed 2026-10-20 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_ccobov7vhuqlkw7d GET https://markdownregistry.com/api/v1/resolve?ref=smol-machines/smolvm/local-api GET https://markdownregistry.com/api/v1/blob/5b735a19fe9c2c71c24857fc3fca4895f5104c782e5f55453b29405db8d08527
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.