Skip to main content

Secure OVH API proxy + Claude Code skill for AI agents

Project description

ovh-claude

CI Python License Status

Let Claude Code manage OVHcloud resources safely — API credentials stay local and never enter the LLM context.

  • Credentials stay on your machine
  • Simple API calls via ovh-api
  • Claude Code skill installs in one command

Why this exists

When an AI agent (Claude Code, an autonomous SRE bot, a multi-agent pipeline) needs to act on cloud infrastructure, the naive solution is to give it your API keys — pasted into the prompt, exported as env vars, or baked into the agent's context. Any of these leaks the secret into the model's input.

ovh-claude solves this by installing a local CLI (ovh-api) that reads your OVHcloud credentials from ~/.config/ovh/credentials and returns only the JSON the agent needs. The agent calls the CLI; the credentials never appear in any prompt.

Quickstart

# 1. Install (under 1 min)
pipx install git+https://github.com/swoelffel/ovh-claude.git

# 2. Register the Claude Code skill
ovh-claude install-skill

# 3. Verify everything works end-to-end (incl. live API call)
ovh-claude doctor

# 4. First real call
ovh-api GET /me

If doctor passes, you're done. Total: under 5 minutes including token creation.

Prerequisites

You need pipx (brew install pipx or python -m pip install --user pipx).

Create ~/.config/ovh/credentials:

[default]
endpoint=ovh-eu
application_key=YOUR_APP_KEY
application_secret=YOUR_APP_SECRET
consumer_key=YOUR_CONSUMER_KEY

Generate tokens at https://api.ovh.com/createToken/ with the rights you need.

Platform support

Platform Status Notes
macOS ✅ Supported (tested) Tested with pipx
Linux ✅ Supported (tested via CI on Ubuntu) Verified on Python 3.10/3.11/3.12 in CI
WSL (Ubuntu/Debian) 🟢 Should work, not yet tested Recommended path for Claude Code on Windows
Windows (PowerShell native) ⚠️ Best-effort, untested Credentials path: %USERPROFILE%\.config\ovh\credentials. JSON body in PowerShell: use single-quote outside, double-quote inside, or read from file. PRs welcome.

Usage

ovh-api GET /vps
ovh-api GET /vps/vps-xxx.ovh.net
ovh-api POST /domain/zone/example.com/record '{"fieldType":"A","subDomain":"@","target":"1.2.3.4","ttl":300}'
ovh-api DELETE /domain/zone/example.com/record/12345

Claude Code skill

After ovh-claude install-skill, the skill ovh-api is registered in ~/.claude/skills/. Claude agents automatically use it for OVH-related tasks. The bundled skill enforces operational defaults: GET before POST/DELETE, human confirmation before destructive actions, no secrets in stdout.

Security model

What ovh-claude protects:

  • OVH credentials are read from ~/.config/ovh/credentials, never passed via CLI arguments (no --api-secret … flag → no shell history leak)
  • Credentials never appear on stdout (only the API JSON response is printed)
  • Errors go to stderr with sanitized messages (no secret values)
  • The agent's LLM context never sees credentials, only API responses

What ovh-claude does NOT protect:

  • The agent's decisions — if the agent decides to delete a record, ovh-api DELETE … will delete it. Keep a human in the loop for destructive actions (the bundled skill enforces this convention but cannot prevent a misuse-prompted call).
  • OVH-side authorization — if your consumer key has permission to drop a domain, the proxy will let the agent drop it.
  • Local file system access — anyone with read access to ~/.config/ovh/credentials can use the proxy.

Best practices:

  • Generate a separate consumer key per environment (dev / staging / prod) at https://api.ovh.com/createToken/
  • Scope each token to the minimum API rights needed (e.g. GET /vps/* only, no DELETE)
  • Set expiry on tokens, rotate periodically
  • Never commit the credentials file — ~/.config/ovh/credentials is outside any repo by design

Contributing

Issues and PRs welcome — especially platform validation for Linux, WSL, and Windows.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovh_claude-0.1.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovh_claude-0.1.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file ovh_claude-0.1.1.tar.gz.

File metadata

  • Download URL: ovh_claude-0.1.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ovh_claude-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2d4a1a9b673cfccff52761e429534cc744b79febbedcb405e52bf8bee6819995
MD5 04706c73bdf6c315a0ed6ef556fde4b7
BLAKE2b-256 7a47a25cf19433606cc83e76e32eec3829d3af67c964a9d1f2b9b9396fc39834

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovh_claude-0.1.1.tar.gz:

Publisher: publish.yml on swoelffel/ovh-claude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ovh_claude-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ovh_claude-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ovh_claude-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b138576e785161e55a1e5772f3b8ec39a25146323488d4e071113275b6bc3146
MD5 e091f85df56b405637e139f10a8935e3
BLAKE2b-256 e9c309ea9278f48970bf12fbb755bb372a407f762190360a9b5d49ac911e9167

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovh_claude-0.1.1-py3-none-any.whl:

Publisher: publish.yml on swoelffel/ovh-claude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page