Skip to main content

Overview

MeepaGateway manages credentials for your agents using a flat credential model. All credential types — email addresses, phone numbers, virtual credit cards, GitHub tokens, and custom logins — are stored as uniform AgentCredential entries grouped by category. Credentials are provisioned per-agent. Built-in categories (email, phone, credit card) support automatic provisioning through external services. Other categories (login, api_key) are stored directly with no provisioning step required. Credentials are stored in a SOPS-encrypted file in each agent’s workspace. Credential provisioning is disabled by default. Enable it under credentials in config.yaml.

Credential Categories


Credential Origins

Every credential has an origin that tracks how it was obtained:
  • operator_provided — An operator or admin pre-created and registered the credential.
  • agent_created — The agent autonomously created this credential (e.g., signed up for a service using its email address).

Configuration

Global Setup

Per-Agent Override

Disable or customise credentials for a specific agent:

Credential File Format

Provisioned credentials are written to:
The file uses a flat list format:
Old identity.json files are automatically migrated to this format on first read.

Action Cards (Chat-Based Credential Storage)

Agents can store credentials through interactive action cards in chat. When an agent calls the credential tool with add_credential, it sends a form to the conversation where the user fills in the service name, username, password, and confirms. The credential is then encrypted and saved. Action cards are currently supported on MeepaChat. To enable them:
  1. Add a meepachat connector to the agent
  2. Set gateway_api_url in MeepaChat’s config (see MeepaChat integration guide)
Action cards expire after 5 minutes. Only one pending action per agent is allowed — creating a new one replaces any existing action.

Adding Login / API Key Credentials

Login and API key credentials do not require provisioning — they are stored directly in the agent’s encrypted credential store.

Via the Captain Dashboard

  1. Open the agent in the Captain dashboard.
  2. Scroll to Agent Credentials and click + Add Credential.
  3. Select a category (Login, API Key, Token), enter the service name and value, and save.

Via the API

Via the CLI

Launches an interactive credential management TUI for the agent.

Removing Credentials

Example — remove a GitHub login:

Credential Store

The credential store uses SOPS with age encryption. An age keypair is generated automatically on first provisioning:
All credential values are encrypted at rest. Plaintext credentials never touch disk outside of the credential store.

Container Injection

When inject_credentials_env = true, the agent’s credentials are injected as environment variables into the Docker container:
Available environment variables inside the container:

Credential Status Values

Each AgentCredential entry has a status field: Partial success is valid — the credentials file is written even if some entries fail.

Security Notes

  • Back up private-key.key — without it, credentials cannot be decrypted
  • Credential values are encrypted at rest via SOPS/age
  • inject_credentials_env = true passes credentials into container env — only enable when the agent’s tools require them
  • Deprovisioning deletes the local credentials file but does not revoke credentials in third-party services (Privacy.com cards, AgentMail inboxes, etc.) — revoke those manually