Ink Skill & CLI
A lot of you have been asking for Skill rather than MCP, so we're releasing Ink CLI and Skill for agents.
What's Ink?
Ink gives your AI coding agent direct control over cloud infrastructure — compute, domains, databases (SQLite now, Postgres coming soon), and billing. It works with Claude Code, Cursor, Codex, Gemini CLI, Windsurf, VS Code, Kimi Code, Goose, and others. Point it at a repo, and you get a running service at {name}.ml.ink in about 60 seconds.
This update adds two new ways to interact with Ink, in addition to MCP: the Ink CLI and Ink Skills.
How is Ink different?
There are a lot of great infrastructure products right now — Fly, Render, Railway, Vercel, just to name a few. But we think there are still gaps when it comes to getting the most out of agents.
Agent-first
Every operation a human can perform — deploying services, reading logs, checking metrics, managing DNS records, setting secrets, adjusting billing — should be available to agents through the same API. We treat this as a hard requirement, not a nice-to-have. We're not fully there yet, but that's where we're converging: if a human can do it in the dashboard, an agent should be able to do it through MCP or the CLI.
One thing Ink does differently is DNS zone delegation instead of individual subdomain delegation. You delegate a zone once — say dev.acme.com — and from that point on, agents can create any subdomain under it instantly, without human involvement:
dev.acme.comapi.dev.acme.comstaging.dev.acme.comv2.api.dev.acme.com
No approval flow, no waiting for DNS propagation. The agent decides it needs a new service, picks a name, and it's live.
You control how much autonomy your agent gets. But the capability is always there.
$ ink metrics my-api
Metrics (1h, up to 50 points)
Window 2026-03-10 13:05:24 -> 2026-03-10 14:05:24 (50 samples)
CPU current 0.0347 vCPUs 34.7% of limit
avg 0.0346 vCPUs min 0.0343 vCPUs peak 0.0351 vCPUs
Memory current 37.1 MB 14.5% of limit
avg 37.0 MB min 36.7 MB peak 38.4 MB
Net RX current 136 B/s
avg 135 B/s min 122 B/s peak 137 B/s
Net TX current 103 B/s
avg 102 B/s min 92.6 B/s peak 104 B/s
History
╭────────┬─────────┬──────────┬──────────┬──────────╮
│ TIME │ CPU │ MEMORY │ NET RX │ NET TX │
├────────┼─────────┼──────────┼──────────┼──────────┤
│ 13:05 │ 0.0343 │ 36.8 MB │ 135 B/s │ 103 B/s │
│ 13:13 │ 0.0348 │ 36.8 MB │ 136 B/s │ 103 B/s │
│ 13:22 │ 0.0347 │ 38.4 MB │ 136 B/s │ 103 B/s │
│ 13:30 │ 0.0346 │ 36.9 MB │ 136 B/s │ 103 B/s │
│ 13:40 │ 0.0346 │ 37.1 MB │ 136 B/s │ 103 B/s │
╰────────┴─────────┴──────────┴──────────┴──────────╯$ ink whoami
╭──────────────────────────────────────╮
│ Account │
│ │
│ Email [email protected] │
│ Workspace default │
│ Plan pro │
│ GitHub App installed │
╰──────────────────────────────────────╯Shared workspaces
Multiple agents work on the same workspace at the same time. One agent deploys the backend, another ships the frontend, a third monitors logs and scales resources — all operating on the same set of services, domains, and secrets. Humans and agents are peers in a workspace. You invite a teammate, their agent gets the same access yours does.
Next.js
FastAPI
No per-seat pricing
Plans start at $5/month (Hobby) and $20/month (Pro), each including that amount in usage credits. You only pay extra if you exceed the included credits. Billing is per-minute for CPU, memory, and egress — no charge per user, per agent, or per workspace member. If your service is stopped, you pay nothing. Agents don't cost extra.
Built-in git for everyone
Not everyone has GitHub configured — especially people new to coding or using vibecoding tools for the first time. Ink has built-in git hosting so your agent can create a repo, push code, and deploy without any external accounts or git configuration.
Repos are owned at the workspace level, so multiple agents and humans in the same workspace can push to and deploy from the same repo — no need to set up access tokens or SSH keys for each one.
If you're a developer, you'll probably want to use GitHub instead — and that's recommended. Ink's GitHub App integration gives you automatic deploys on push for private and public repos. But the internal git means nobody is blocked on day one.
Ink CLI
The ink CLI has full parity with the MCP server. Agents use it directly as a shell tool, and it works just as well for humans managing services, debugging deploys, or scripting CI pipelines.
Install:
npm install -g @mldotink/cliInk Skills
Skills are the fastest way to teach your agent about Ink. They work with OpenClaw too. The installer downloads a SKILL.md file into your agent's skills directory — giving it context on all available Ink tools and how to use them.
curl -fsSL https://ml.ink/skills.sh | bashThe installer detects which agents you have installed and writes the skill file to each one. If you pass INK_API_KEY, it saves your credentials too.
Skills and the CLI are independent — skills tell your agent what Ink can do, the CLI (or MCP server) is how it actually does it.
Commands:
ink deploy— Deploy from a GitHub or Ink-hosted repo. Framework auto-detected.ink redeploy— Rebuild and update a running service.ink services— List services across workspaces.--allfor everything.ink status— Service details and logs.ink metrics— CPU, memory, and network metrics.ink secret set|list|delete— Manage env vars per service. Supports--file.ink config set— Set default workspace/project to skip repeated flags.ink login— OAuth login with interactive workspace selection.ink whoami— Account info, plan, and GitHub connection status.
Real-life monorepo example
Say you have a monorepo on GitHub with a FastAPI backend in /backend and a Next.js frontend in /frontend. Here's the full flow:
$ ink deploy backend --repo acme/monorepo --root-dir backend --env-file .env --memory 512Mi --vcpu 0.5
✓ Service created: backend
Status ● building
URL https://backend.ml.ink$ ink deploy frontend --repo acme/monorepo --root-dir frontend --env BACKEND_URL=https://backend.ml.ink
✓ Service created: frontend
Status ● building
URL https://frontend.ml.ink$ ink services
╭──────────┬─────────┬────────────┬──────────────────────────╮
│ NAME │ STATUS │ MEMORY │ URL │
├──────────┼─────────┼────────────┼──────────────────────────┤
│ backend │ ● active│ 512Mi │ https://backend.ml.ink │
│ frontend │ ● active│ 256Mi │ https://frontend.ml.ink │
╰──────────┴─────────┴────────────┴──────────────────────────╯
2 servicesBoth services deploy from the same repo, each with its own --root-dir. The backend loads secrets from .env, while the frontend gets the backend endpoint via --env BACKEND_URL=.... Subsequent pushes to your GitHub repo trigger automatic redeploys for both.
An agent can do this exact same flow — through MCP or by calling ink as a shell tool.
Server-side Secrets
Ink now manages secrets server-side. Set them via the CLI or through MCP — they're encrypted at rest and injected as environment variables at both build time and runtime.
$ ink secret import my-api --file .env
✓ Set 5 variable(s) on my-api
Status ● activeYou can also set individual variables with ink secret set my-api KEY=value.
Unified Agent API
The API your agent talks to has been restructured. All tools now follow namespace_verb naming (e.g. service_create, repo_list, secret_set). Every field has descriptions and defaults, so agents can discover what's available through schema introspection without needing external documentation.
What's Next
Managed databases, team collaboration, and more. Follow this changelog or check the docs at ml.ink/docs.