Skip to content
Vimputer
Esc
↑↓navigate↵open⌘Jpreview
On this page

Agents

Let a coding agent build layers and bindings through Vimputer's MCP server.

Vimputer’s CLI runs an MCP server, so an agent like Claude Code or Codex can read your layers and add bindings. The agent talks to the running app over a local socket that only your user account can open; no network port is opened. Vimputer checks every edit before saving it, and the open window picks it up straight away.

Connect an agent

Build the CLI once, then register it with your agent:

pnpm --filter @vimputer/cli build
claude mcp add vimputer -- node ~/code/projects/vimputer/packages/cli/dist/index.js mcp

Codex takes the same command as an mcp_servers entry. Vimputer has to be running while the agent works.

Tools

Tool Does
layers_list Layers in sidebar order, with how many bindings each has
layer_get One layer and its bindings
layer_create, layer_update, layer_delete Edit layers. Deleting a layer moves its bindings to its parent
bindings_put Add bindings, or replace them by id. Returns any conflicts the new bindings cause
bindings_delete Remove bindings
conflicts Keys that shadow or duplicate each other
actions_search Find plugin and Vimputer actions by name, each ready to put in a binding
config_read The whole config, including the variables and apps that conditions refer to
generate Write karabiner.test.json. With activate: true, write the live karabiner.json and switch to its profile

An agent can edit your config and write the test file without changing the remaps you’re using. Your keys only change when it calls generate with activate: true, or when you press Generate & Activate.

If you have unsaved changes in the window when an agent writes, the window reloads the agent’s version and your last edit is dropped.

From the shell

The CLI does the same without an agent (vimputer is node packages/cli/dist/index.js):

vimputer layers list
vimputer layers add Windows --parent <layerId>
vimputer config generate            # test file
vimputer config generate --activate # live karabiner.json