Latchkey latchkey
Interact with arbitrary third-party or self-hosted services (AWS, Slack, Google Drive, Dropbox, GitHub, GitLab, Linear, Coolify...) using their HTTP APIs.
git clone https://github.com/imbue-ai/latchkey
T=$(mktemp -d) && git clone --depth=1 https://github.com/imbue-ai/latchkey "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/openclaw/latchkey" ~/.claude/skills/imbue-ai-latchkey-latchkey-63d4cc && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/imbue-ai/latchkey "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/openclaw/latchkey" ~/.openclaw/skills/imbue-ai-latchkey-latchkey-63d4cc && rm -rf "$T"
skills/openclaw/latchkey/SKILL.mdLatchkey
Instructions
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) need to be manually managed by the user.
Use this skill when the user asks you to work with services that have HTTP APIs, like AWS, Coolify, GitLab, Google Drive, Discord or others.
Usage:
- Use
instead of regularlatchkey curl
for supported services.curl - Pass through all regular curl arguments - latchkey is a transparent wrapper.
- Check for
to get a list of supported services. Uselatchkey services list
to only show the currently configured ones.--viable - Use
to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).latchkey services info <service_name> - If necessary, ask the user to configure credentials first. Tell the user to run
on the machine where latchkey is installed (using the setCredentialsExample from thelatchkey auth set
command).services info - Look for the newest documentation of the desired public API online.
- Do not initiate a new login if the credentials status is
orvalid
- the user might just not have the necessary permissions for the action you're trying to do.unknown
Examples
Make an authenticated curl request
latchkey curl [curl arguments]
Creating a Slack channel
latchkey curl -X POST 'https://slack.com/api/conversations.create' \ -H 'Content-Type: application/json' \ -d '{"name":"my-channel"}'
(Notice that
-H 'Authorization: Bearer is not present in the invocation.)
Getting Discord user info
latchkey curl 'https://discord.com/api/v10/users/@me'
Detect expired credentials
latchkey services info discord # Check the "credentialStatus" field - shows "invalid"
List usable services
latchkey services list --viable
Lists services that have stored credentials.
Get service-specific info
latchkey services info slack
Returns auth options, credentials status, and developer notes about the service.
Storing credentials
It is the user's responsibility to supply credentials. The user would typically do something like this:
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
When credentials cannot be expressed as static curl arguments, the user would use the
set-nocurl subcommand. For example:
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
If a service doesn't appear with the
--viable flag, it may
still be supported; the user just hasn't provided the
credentials yet. latchkey service info <service_name> can be
used to see how to provide credentials for a specific service.
Notes
- All curl arguments are passed through unchanged
- Return code, stdout and stderr are passed back from curl
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
Currently supported services
Latchkey currently offers varying levels of support for the following services: AWS, Calendly, Coolify, Discord, Dropbox, Figma, GitHub, GitLab, Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets, Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Umami, Yelp, Zoom, and more.
User-registered services
Note for humans: users can also add limited support for new services at runtime using the
latchkey services register command.