Lyre / documentation
Early accessGet Lyre

Build an integration

Connect an external service at the right layer and handle failures deliberately.

Choose where it belongs

Your project
A feature your app’s users need, such as booking availability. Implement it in your app and its backend.
A Lyre plugin
A tool for the person building the app, such as a host-side deployment status panel.
A coding provider
A provider adapter when you need agent sessions, approvals and model selection—not merely an HTTP request.

Define the smallest useful request

Start with a read-only operation against a test account. Define a bounded input, the minimum output needed by the UI, a timeout and fixed error states. Validate the destination on the host; do not let a client send arbitrary URLs with a privileged API key.

Client: request a status by approved resource ID
Host: validate scope → load credential → call fixed service
Host: return a small status response
Client: render ready, unavailable or permission denied

Keep secrets server-side

Use the service’s narrowest suitable credentials and its documented authentication flow. Never return keys or raw provider errors through a plugin response. Avoid putting secrets in shared settings because those may be visible to clients.

Separate development and production configuration. For a public browser app, use a backend for secret-bearing requests. A key hidden in a frontend environment variable is still shipped to the browser.

Test before you write real data

  • Invalid or expired credentials produce a useful, sanitized error.
  • Wrong-project requests and unauthorized users are denied.
  • Slow requests, rate limits, cancellation and disconnection are bounded.
  • Retries do not duplicate writes; use the service’s idempotency mechanism where available.
  • Removing the integration stops background work and releases resources.

For actions that publish, deploy, spend money or change data, show the exact action and obtain the required user approval. Keep a read-only mode for diagnosis.