CLI client for Daptin — the headless CMS and API server.
All Daptin entities are accessed uniformly via CRUD commands, and all Daptin actions can be executed uniformly via execute. Common workflows such as cloud storage and file asset uploads also have ergonomic wrapper commands.
The CLI is self-describing. Start with:
daptin-cli --help
daptin-cli list --help
daptin-cli execute --help
daptin-cli describe action --help
daptin-cli oauth --help
daptin-cli integration --help
daptin-cli storage --help
daptin-cli asset --helpFor any Daptin action, use describe action before execute to see whether the action needs an instance reference id and which input fields it accepts:
daptin-cli describe action integration install_integration
daptin-cli execute integration install_integration --reference-id <integration_reference_id>brew install daptin/tap/daptin-cliscoop bucket add daptin https://github.com/daptin/scoop-bucket
scoop install daptin-cliDownload the .deb from the latest release:
sudo dpkg -i daptin-cli_*.debsudo rpm -i daptin-cli_*.rpmgo install github.com/daptin/daptin-cli@latestGrab a binary from the releases page for linux, macOS, or Windows (amd64 / arm64).
# Point to your Daptin server
daptin-cli context add myserver http://localhost:6336
daptin-cli context set myserver
# Sign in (signin is an action like any other)
daptin-cli execute user_account signin email=admin@example.com password=secret
# List tables
daptin-cli list --columns table_name,is_top_level world
# List rows
daptin-cli list --columns name,email --page-size 20 user_account
# Discover action requirements
daptin-cli describe action integration install_integrationContexts store server endpoints and auth tokens in ~/.daptin/config.yaml.
daptin-cli context add prod https://api.example.com
daptin-cli context add local http://localhost:6336
daptin-cli context set prod
daptin-cli context listOverride per-command with --endpoint:
daptin-cli --endpoint http://localhost:6336 list worlddaptin-cli list <entity> [flags]Flags: --columns, --page-size, --page, --sort, --filter, --include
# List with column selection and pagination
daptin-cli list --columns table_name,reference_id --page-size 50 world
# Sort descending by created_at
daptin-cli list --sort -created_at --page-size 10 document
# Filter
daptin-cli list --filter name=administrators usergroup
daptin-cli list --filter "status is active" task
daptin-cli list --filter "table_name like %doc%" world
daptin-cli list --filter "name is admin;email contains example" user_account
# Include relations
daptin-cli list --include user_account_id documentdaptin-cli get <entity> <reference_id> [--columns col1,col2]daptin-cli get world 019228bb-a7cd-773b-a465-c92d7c54d956
daptin-cli get --columns table_name,is_top_level world 019228bb-a7cd-773b-a465-c92d7c54d956# Create with key=value pairs
daptin-cli create document document_name=report.pdf document_extension=pdf
# Create with JSON
daptin-cli create document '{"document_name":"report.pdf","document_extension":"pdf"}'
# Update
daptin-cli update document <reference_id> document_name=updated.pdf
# Delete
daptin-cli delete document <reference_id>daptin-cli related <entity> <reference_id> <relation_column>
daptin-cli related document <ref_id> user_account_idAll Daptin actions — built-in or custom — can be executed with execute.
daptin-cli execute <entity> <action_name> [key=val ...]# Sign in
daptin-cli execute user_account signin email=admin@example.com password=secret
# Sign up
daptin-cli execute user_account signup name=Alice email=alice@example.com password=secret passwordConfirm=secret
# Sign in with 2FA
daptin-cli execute user_account verify_otp email=admin@example.com mobile_number=+1234567890 otp=123456On successful signin, the token is automatically saved to the active context.
# Generate random data
daptin-cli execute world generate_random_data table_name=products count=100
# Export data
daptin-cli execute world export_data table_name=document format=json
# Upload file to cloud store
daptin-cli execute cloud_store upload_file --reference-id <store_id> path=/uploads
# Download system schema
daptin-cli execute world download_system_schemaPrompt for fields based on the action's InFields schema:
daptin-cli execute user_account signin --interactive
# > Email: admin@example.com
# > Password: ****Password fields are automatically masked.
For actions that require an entity instance, pass --reference-id:
daptin-cli execute cloud_store upload_file --reference-id <cloud_store_id> path=/docsUse describe action when you are unsure:
daptin-cli describe action cloud_store upload_filedaptin-cli describe table documentShows columns (name + type) and available actions.
daptin-cli describe action document createDocumentShows whether the action is instance-bound, whether --reference-id is required, the action's InFields, and an example execute command.
OAuth provider setup and OpenAPI integration workflows have first-class wrappers. The generic create, list, describe action, and execute commands still work, but these commands keep the common lifecycle discoverable and avoid passing large specs as shell arguments.
# Create an OAuth connection without putting the client secret in shell history
export ASANA_CLIENT_SECRET=...
daptin-cli oauth connect create asana.com \
--client-id "$ASANA_CLIENT_ID" \
--client-secret-env ASANA_CLIENT_SECRET \
--auth-url https://app.asana.com/-/oauth_authorize \
--token-url https://app.asana.com/-/oauth_token \
--profile-url https://app.asana.com/api/1.0/users/me \
--scope default
# Start the browser OAuth flow and list token references after callback
daptin-cli oauth login-url asana.com
daptin-cli oauth tokens list --provider asana.comImport large OpenAPI specs from files, URLs, or stdin:
daptin-cli integration import \
--provider asana.com \
--spec-file ./asana_oas.yaml \
--auth oauth2 \
--oauth-connect asana.com \
--update
daptin-cli integration install asana.comDiscover installed operations through Daptin's scoped integration discovery endpoints:
daptin-cli integration list
daptin-cli integration operations asana.com
daptin-cli integration describe asana.com getWorkspacesExecute provider-scoped operations:
daptin-cli integration execute asana.com getWorkspaces \
--oauth-token-id <oauth_token_reference_id> \
--input-json '{"opt_fields":["name"]}'
daptin-cli integration execute example.com listUsers \
--credential-id <credential_reference_id> \
limit=10integration operations and integration describe require Daptin versions with scoped discovery endpoints: GET /integration/:provider/operations and GET /integration/:provider/operations/:operation.
Cloud storage setup and common file operations are available through storage.
# Create a local store
daptin-cli storage add local-files \
--type local \
--store-provider local \
--root-path /tmp/daptin-files
# Create an S3/MinIO-style store and linked credential
daptin-cli storage add minio \
--type s3 \
--provider Minio \
--endpoint http://localhost:9000 \
--access-key minioadmin \
--secret-key minioadmin123 \
--bucket daptin-test \
--restart
# List and remove stores
daptin-cli storage list
daptin-cli storage remove minioFile operations use store-name:/path addressing:
daptin-cli storage mkdir local-files:/photos
daptin-cli storage upload local-files:/photos ./image.jpg
daptin-cli storage upload local-files:/site ./public --recursive
daptin-cli storage mv local-files:/photos/image.jpg local-files:/archive/image.jpg
daptin-cli storage rm local-files:/archive/image.jpgDirect storage ls and storage download for cloud_store paths are intentionally not implemented as direct cloud-store commands because Daptin exposes those flows through site file actions and asset routes, not direct cloud_store actions.
Use asset for file.* columns on normal entity rows. These commands use Daptin's /asset/... routes.
daptin-cli asset upload product <product_reference_id> photo ./image.jpg
daptin-cli asset list product <product_reference_id> photoTable (default) or JSON:
daptin-cli --output table list world
daptin-cli --output json list worldFilters can use key=value shorthand or semicolon-separated <column> <operator> <value> expressions:
--filter "name=alice"
--filter "name is alice"
--filter "status is active;role is admin"
--filter "name like %ali%"
--filter "count more than 5"
--filter "active is true"
--filter "notes is empty"Operators: is, like, ilike, contains, neq, gt, lt, more than, less than, begins with, ends with, in, is true, is false, is empty, is not, fuzzy
Use % wildcards with like for partial matching. Raw JSON is also accepted:
--filter '[{"column":"name","operator":"like","value":"%ali%"}]'--config FILE, -c Config file (default: ~/.daptin/config.yaml)
--output, -o Output format: table or json (default: table)
--endpoint Server endpoint (default: http://localhost:6336)
--debug Enable debug output
Real-time pub/sub via Daptin's /live endpoint.
# Stream all events
daptin-cli ws listen
# Subscribe to topics
daptin-cli ws subscribe user_account
daptin-cli ws subscribe user_account document order
# Publish a message
daptin-cli ws publish chat-room-1 '{"text":"hello"}'
# Ping
daptin-cli ws ping
# Topic management
daptin-cli ws topic create chat-room-1
daptin-cli ws topic delete chat-room-1
daptin-cli ws topic permission chat-room-1
daptin-cli ws topic permission chat-room-1 --set 2097151
# Cross-node verification
daptin-cli ws verify --endpoints http://node1:6336,http://node2:6336DAPTIN_CLI_CONFIG Config file path
DAPTIN_ENDPOINT Server endpoint
DAPTIN_CLI_OUTPUT Output format