Introduction
The Machine API is a REST service that helps development teams eliminate “works on my machine” problems. It provides a structured way to capture, store, compare, and share environment snapshots and dev config files.
What it does
Section titled “What it does”| Capability | Description |
|---|---|
| Snapshots | Capture a machine’s OS, architecture, runtime versions, dependencies, and environment variables |
| Comparison | Diff two snapshots to see exactly what’s different between two environments |
| File sharing | Upload and download dev config files (.env, docker-compose.yml, etc.) |
| Team access | Invite members with role-based permissions (owner, admin, member, viewer) |
| Webhooks | Receive real-time HTTP notifications when resources change |
| Usage analytics | Track API usage, request volume, and storage consumption |
How it works
Section titled “How it works”- Bootstrap a project — get an API key (no auth required)
- Capture snapshots from each developer’s machine
- Compare snapshots to find environment discrepancies
- Share config files so everyone has the same setup
- Invite your team so they can contribute their own snapshots
Base URL
Section titled “Base URL”https://apis.jameslin.info/machineDesign decisions
Section titled “Design decisions”- API-key auth — every request is authenticated via an
X-API-Keyheader. Keys are hashed with SHA-256 before storage. - Encryption — environment variables are encrypted at rest using AES-256-GCM. They’re only decrypted when you fetch a single snapshot.
- Project isolation — each API key is scoped to a single project. Cross-project access requires separate keys.
- Rate limiting — sliding window counters enforce per-minute and per-day limits per API key.