No description https://skills.sh
  • TypeScript 89.9%
  • JavaScript 9.4%
  • Nix 0.6%
  • Dockerfile 0.1%
Find a file
@s.roertgen c9d1987221
Some checks failed
CI / checks (ubuntu-latest) (push) Failing after 6s
Publish / publish (push) Failing after 1s
CI / checks (windows-latest) (push) Has been cancelled
Add Nix flake for declarative installation
Enables installation via nix with:
- nix build (builds the package)
- nix develop (development shell with nodejs and pnpm)

Can be consumed as a flake input in NixOS/home-manager configs.
2026-02-06 09:03:42 +01:00
.changeset fix: exit cleanly 2026-02-02 21:51:40 +01:00
.github ci: rm duplicate version in release template 2026-01-29 17:25:51 +01:00
.husky chore: tooling + CI baseline (Prettier, pnpm, husky/lint-staged) (#72) 2026-01-22 09:17:48 -08:00
bin perf: use module compile cache (#164) 2026-01-27 10:06:35 -08:00
scripts fix: normalize OpenCode capitalization in agent list (#156) 2026-01-27 13:59:00 -08:00
skills refactor: rename skills 2026-01-30 15:41:39 +01:00
src feat(serve): add env var support to spawned MCP server 2026-02-05 17:30:54 +01:00
tests feat(serve): add env var support to spawned MCP server 2026-02-05 17:30:54 +01:00
ts-sdk@5360d261e1 feat(serve): add remote HTTP MCP server support 2026-02-03 11:33:39 +01:00
typescript-sdk@a5670de388 feat(serve): add remote HTTP MCP server support 2026-02-03 11:33:39 +01:00
.gitignore feat(cli): add serve and use commands with configuration system 2026-02-02 00:10:49 +01:00
.gitmodules fix: exit cleanly 2026-02-02 14:43:16 +01:00
.prettierrc chore: tooling + CI baseline (Prettier, pnpm, husky/lint-staged) (#72) 2026-01-22 09:17:48 -08:00
AGENTS.md feat(cli): rebrand and add remove/list commands 2026-01-30 16:00:27 +01:00
build.config.mjs perf: bundle dependencies (#152) 2026-01-27 09:26:40 -08:00
CHANGELOG.md feat(serve): add env var support to spawned MCP server 2026-02-05 17:30:54 +01:00
flake.lock Add Nix flake for declarative installation 2026-02-06 09:03:42 +01:00
flake.nix Add Nix flake for declarative installation 2026-02-06 09:03:42 +01:00
package.json feat(serve): add env var support to spawned MCP server 2026-02-05 17:30:54 +01:00
pnpm-lock.yaml feat(serve): add remote HTTP MCP server support 2026-02-03 11:33:39 +01:00
README.md feat(serve): add env var support to spawned MCP server 2026-02-05 17:30:54 +01:00
tsconfig.json refactor(cli, config): improve CLI argument parsing and configuration loading 2026-02-02 13:35:36 +01:00

CVMI (wip)

ContextVM Interface (CVMI) is a CLI tool that allows you to navigate and use the ContextVM protocol. It provides a set of tools and skills to help you interact, and implement the protocol.

Note: This project is a fork of the skills CLI by Vercel Labs.

Quick Start

# Install ContextVM skills interactively
npx cvmi add

# Install a specific skill from the ContextVM repository
npx cvmi add --skill overview

Roadmap

  • cvmi add - Install skills with interactive picker
  • cvmi add --skill <name> - Install specific skills
  • cvmi serve - Expose a server (gateway)
  • cvmi use - Use a server from nostr as stdio (proxy)
  • cvmi cn - Compile a server to code (ctxcn)
  • cvmi call - Call methods from a server
  • cvmi inspect - Inspect server schema

Configuration

Configuration is stored in JSON format with the following priority:

  1. CLI flags (highest priority)
  2. Custom config: --config <path>
  3. Project-level: ./.cvmi.json
  4. Global: ~/.cvmi/config.json
  5. Environment variables

Global config path: ~/.cvmi/config.json (separate from ~/.agents/ used for skills)

Nostr MCP environment variables:

  • CVMI_SERVE_* / legacy CVMI_GATEWAY_* for serve/gateway settings
  • CVMI_USE_* / legacy CVMI_PROXY_* for use/proxy settings

Additional serve env vars:

  • CVMI_SERVE_URL / CVMI_GATEWAY_URL to set the remote Streamable HTTP MCP server URL

Logging environment variables (SDK-level): The underlying @contextvm/sdk uses these env vars to control logging:

Variable Values Description
LOG_LEVEL debug, info, warn, error, silent Minimum log level to output (default: info)
LOG_DESTINATION stderr, stdout, file Where to write logs (default: stderr)
LOG_FILE path string Path to log file (used when LOG_DESTINATION=file)
LOG_ENABLED true, false Disable all logging with false (default: true)

Example: Run serve with debug logging to a file

LOG_LEVEL=debug LOG_DESTINATION=file LOG_FILE=./cvmi.log cvmi serve -- npx -y @modelcontextprotocol/server-filesystem /tmp

Example: Run use with only warnings and errors

LOG_LEVEL=warn cvmi use npub1q...

Example global config (~/.cvmi/config.json):

{
  "serve": {
    "url": "https://my.mcp.com/mcp",
    "command": "npx",
    "args": ["@modelcontextprotocol/server-filesystem", "."],
    "privateKey": "nsec1...",
    "relays": ["wss://relay.damus.io"],
    "public": false,
    "encryption": "optional"
  },
  "use": {
    "privateKey": "nsec1...",
    "relays": ["wss://relay.damus.io"],
    "serverPubkey": "npub1...",
    "encryption": "optional"
  }
}

Note: For serve, you should configure either serve.url (remote Streamable HTTP MCP server) or serve.command/serve.args (spawn local stdio MCP server).

About quoting commands

cvmi serve spawns the MCP server directly (no shell). Prefer passing the command and its arguments as separate tokens:

cvmi serve -- npx -y @modelcontextprotocol/server-filesystem /tmp

If you accidentally pass a full command as a single quoted string (e.g. "npx -y ..."), cvmi will split it into an executable + args for you.

Passing environment variables to the spawned MCP server

Use --env / -e (repeatable):

cvmi serve -e LOG_LEVEL=debug -- npx -y @modelcontextprotocol/server-filesystem /tmp

You can also set it in config under serve.env.

Note: The CLI auto-generates a private key if none is provided. Keys can be specified in hex format (with or without 0x prefix) or NIP-19 bech32 format (nsec1... for private keys, npub1... for public keys).

License

MIT