Skip to main content

Prerequisites

  • Python >=3.13,<3.14
  • uv — the only supported package manager (never bare pip)
  • For provider-backed commands: a Modal account and either provider API keys or an Infisical project (see Secrets and API keys)

Get started

1

Clone

Consuming the SDK from another project instead? See Installation.
2

Install dependencies

3

Wire credentials for provider-backed commands

Commands that touch external providers (Exa, Attio, Apollo, Parallel, …) execute as functions on your Modal deployment — the CLI is a thin client that invokes them by name. Two things make those commands work:
  1. A deployed app. Authenticate with Modal (uv run modal token new), then:
  2. Provider keys. Pass them per command with API-key flags, or let the deployed functions fetch them from Infisical at entry:
The Secrets and API keys page explains the resolution order and the Infisical bootstrap in full.
4

Search your Attio workspace

Find a person in your CRM without changing any data (replace the example name):
Filter the people search to an email domain when you want to find everyone at a company:
Both commands return a JSON envelope with the matching records and a result count. You can also search by --email or browse records with --sample.

Quality gates

Next steps

Secrets and API keys

Key resolution order, Infisical bootstrap, and the env-var reference.

CLI contract

JSON on stdout, errors on stderr, preview-by-default mutations.

Architecture

The enforced cli → src → libs layering and where new code goes.

Telemetry

OTEL collector fan-out to Dash0, HyperDX, Logfire, and Grafana.
Last modified on August 13, 2026