The official CLI for the Dedalus REST API.
It is generated with Stainless.
To test or install the CLI locally, you need Go version 1.22 or later installed.
go install 'github.com/stainless-sdks/dedalus-sdk-cli/cmd/dedalus-sdk@latest'Once you have run go install, the binary is placed in your Go bin directory:
- Default location:
$HOME/go/bin(or$GOPATH/binif GOPATH is set) - Check your path: Run
go env GOPATHto see the base directory
If commands aren't found after installation, add the Go bin directory to your PATH:
# Add to your shell profile (.zshrc, .bashrc, etc.)
export PATH="$PATH:$(go env GOPATH)/bin"After cloning the git repository for this project, you can use the
scripts/run script to run the tool locally:
./scripts/run args...The CLI follows a resource-based command structure:
dedalus-sdk [resource] <command> [flags...]dedalus-sdk chat:completions create \
--api-key 'My API Key' \
--model openai/gpt-5-nano \
--message '{content: You are Stephen Dedalus. Respond in morose Joycean malaise., role: system}' \
--message "{content: 'Hello, how are you today?', role: user}"For details about specific commands, use the --help flag.
| Environment variable | Description | Required | Default value |
|---|---|---|---|
DEDALUS_API_KEY |
API key for Bearer token authentication. | no | null |
DEDALUS_X_API_KEY |
API key for X-API-Key header authentication. | no | null |
DEDALUS_AS_URL |
MCP Authorization Server URL | no | "https://as.dedaluslabs.ai" |
DEDALUS_ORG_ID |
Organization ID for request scoping. | no | null |
DEDALUS_PROVIDER |
Provider name for BYOK mode (e.g., 'google', 'openai', 'anthropic'). | no | null |
DEDALUS_PROVIDER_KEY |
Provider API key for BYOK mode. | no | null |
DEDALUS_PROVIDER_MODEL |
Model identifier for BYOK provider. | no | null |
--api-key- API key for Bearer token authentication. (can also be set withDEDALUS_API_KEYenv var)--x-api-key- API key for X-API-Key header authentication. (can also be set withDEDALUS_X_API_KEYenv var)--as-base-url- MCP Authorization Server URL (can also be set withDEDALUS_AS_URLenv var)--dedalus-org-id- Organization ID for request scoping. (can also be set withDEDALUS_ORG_IDenv var)--provider- Provider name for BYOK mode (e.g., 'google', 'openai', 'anthropic'). (can also be set withDEDALUS_PROVIDERenv var)--provider-key- Provider API key for BYOK mode. (can also be set withDEDALUS_PROVIDER_KEYenv var)--provider-model- Model identifier for BYOK provider. (can also be set withDEDALUS_PROVIDER_MODELenv var)--help- Show command line usage--debug- Enable debug logging (includes HTTP request/response details)--version,-v- Show the CLI version--base-url- Use a custom API backend URL--format- Change the output format (auto,explore,json,jsonl,pretty,raw,yaml)--format-error- Change the output format for errors (auto,explore,json,jsonl,pretty,raw,yaml)--transform- Transform the data output using GJSON syntax--transform-error- Transform the error output using GJSON syntax
To pass files to your API, you can use the @myfile.ext syntax:
dedalus-sdk <command> --arg @abe.jpgFiles can also be passed inside JSON or YAML blobs:
dedalus-sdk <command> --arg '{image: "@abe.jpg"}'
# Equivalent:
dedalus-sdk <command> <<YAML
arg:
image: "@abe.jpg"
YAMLIf you need to pass a string literal that begins with an @ sign, you can
escape the @ sign to avoid accidentally passing a file.
dedalus-sdk <command> --username '\@abe'For JSON endpoints, the CLI tool does filetype sniffing to determine whether the
file contents should be sent as a string literal (for plain text files) or as a
base64-encoded string literal (for binary files). If you need to explicitly send
the file as either plain text or base64-encoded data, you can use
@file://myfile.txt (for string encoding) or @data://myfile.dat (for
base64-encoding). Note that absolute paths will begin with @file:// or
@data://, followed by a third / (for example, @file:///tmp/file.txt).
dedalus-sdk <command> --arg @data://file.txtYou can link the CLI against a different version of the Dedalus Go SDK
for development purposes using the ./scripts/link script.
To link to a specific version from a repository (version can be a branch, git tag, or commit hash):
./scripts/link github.com/org/repo@versionTo link to a local copy of the SDK:
./scripts/link ../path/to/githubcomdedaluslabsdedalussdkgo-goIf you run the link script without any arguments, it will default to ../githubcomdedaluslabsdedalussdkgo-go.