All updates

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.com
  • api.dev.acme.com
  • staging.dev.acme.com
  • v2.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.

Add Stripe webhooks to the API
Claude CodeAgent
Scale frontend to 1 vCPU
CodexAgent
Project
frontend

Next.js

backend

FastAPI

A
Write tests for the auth flow
AliceHuman

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/cli

Ink 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 | bash

The 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. --all for 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 services

Both 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          ● active

You 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.