Skip to content
Back to skills

Codevisor Machines

CSecurity

Run MCP tools, Codevisor tools, or agents on another of the user's machines (e.g. drive the MacBook's simulator or Xcode from a chat on the Mac Studio), and add or remove machines on the account (e.g. set up a new VPS as a Codevisor machine over SSH). Use when the user mentions another computer or machine by name, when a needed tool is only available elsewhere, when work should run on a different machine, or when a server or computer should become (or stop being) a Codevisor machine.

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
ai-agentsgo

Works with

  • cli
  • mcp

Security analysis

C67/100
  • mediumUses curl or wget to download content
  • criticalAccesses sensitive system or user directories

Pro shows the line behind each finding and how to fix it

Scanned October 1, 2026

npx -y skills add 851-labs/codevisor --skill codevisor-machines --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Codevisor Machines?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Codevisor Machines
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/851-labs-codevisor-machines/badge)](https://www.skillsdirectory.com/skills/851-labs-codevisor-machines)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: codevisor-machines
description: Run MCP tools, Codevisor tools, or agents on another of the user's machines (e.g. drive the MacBook's simulator or Xcode from a chat on the Mac Studio), and add or remove machines on the account (e.g. set up a new VPS as a Codevisor machine over SSH). Use when the user mentions another computer or machine by name, when a needed tool is only available elsewhere, when work should run on a different machine, or when a server or computer should become (or stop being) a Codevisor machine.
---

# Codevisor machines

`tools` always means the machine this chat runs on. Other machines on the user's account expose the same kind of object.

```js
;async () => {
  const all = await machines.list()
  // [{ id, name, os?, online, lastSeen?, isCurrent }]
  const mbp = await machines.get("macbook") // id, exact name, or unique name prefix
  const hits = await mbp.tools.search({ query: "simulator screenshot" })
  return hits.items.map((item) => item.path)
}
```

- `machines.current` is this machine; `machines.current.tools === tools`.
- `m.tools.<server>.<tool>(args)`, `m.tools.search(…)` and `m.tools.describe.tool(…)` run on machine `m`, using that machine's MCPs and credentials.
- `m.tools.codevisor.*` controls Codevisor on that machine, including starting agents there (see `codevisor-agents`).
- `m.clients.list()` lists apps connected to that machine (see `codevisor-clients`).
- `tools.search({ query, machines: "all" })` searches every online machine. Each result has `machine: { id, name }`.

Your script still runs here; only the tool calls travel. You can combine machines in one script, for example building on one and reading the result on another.

## Disconnects

A call to an unreachable machine throws `MachineUnavailableError` with `{ machineId, machineName, lastSeen, phase }`:

- `phase: "before-send"`: the machine was offline and nothing ran. It is safe to retry later or use another machine.
- `phase: "in-flight"`: the connection dropped mid-call and the tool may or may not have completed. Check the result (for example with a read-only tool) before repeating anything with side effects.

```js
;async () => {
  try {
    return await (await machines.get("macbook")).tools.xcode.build({ scheme: "App" })
  } catch (error) {
    if (error instanceof MachineUnavailableError) return `MacBook unavailable (${error.phase})`
    throw error
  }
}
```

Check `online` in `machines.list()` before starting long work on another machine.

## Adding a machine

`machines.add` sets a host up end to end, with no approval step: from this machine (with its SSH keys and `~/.ssh/config`) it installs Codevisor on the host, joins it to the account with a one-time invite, and waits until it's online.

```js
;async () => {
  status("Installing Codevisor on the new server")
  const { machine } = await tools.codevisor.machines.add({
    ssh: "root@203.0.113.7",
    name: "hetzner-1"
  })
  return machine // also in machines.list() from now on
}
```

- The host needs key-based SSH from this machine and `curl`. Provision the server (or add your key to it) first; `machines.add` never prompts for a password.
- It takes a few minutes. Failures come back with the host's output: fix the cause (SSH access, firewall, a missing `curl`) and call it again.
- When SSH isn't the way in (cloud-init user data, a web console, a container), use `machines.invite` for a one-time code (about 10 minutes, one use). Install with `CODEVISOR_INVITE=<code>` set (`curl -fsSL https://www.codevisor.dev/install.sh | CODEVISOR_INVITE=… sh`), or run `codevisor auth login --invite -` with the code on stdin. The code is a secret: don't show it to the user or leave it in files.
- `machines.remove({ machineId, confirm })` removes another machine; confirm with the user first. A machine removes itself with `codevisor auth logout`.

The CLI does the same things through the same routes: `codevisor machines add|invite|list|remove`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.