- 🔍 Data Discovery - Search and explore datasets, dataflows, and cards
- 🔗 Data Lineage - Trace data flow with focused Mermaid diagrams
- 📊 Pipeline Monitoring - Track dataflow execution and health scores
- 📝 Report Generation - Export documentation in Markdown/JSON formats
- 🚀 Performance - Built-in caching to minimize API calls
- 🎯 Smart Autocomplete - Interactive command discovery with tab completion
- Domo Instance: Access to a Domo instance (e.g., yourcompany.domo.com)
- Credentials:
- API Token
- OAuth Client ID and Secret
- Node.js: Version 18 or higher
- Yarn: Version 4.x (via Corepack)
- Git: For cloning the repository
Caution
Pre-release, very early in development. Iterative changes to be expected. Use only if you know what you're doing.
# Clone the repository
git clone https://github.com/jsade/domo-query-cli.git
cd domo-query-cli
# Run the installation script
./install.shThe installation script will:
- Install dependencies
- Build a standalone executable
- Install it to your system PATH
- Set up configuration files
If you prefer to build from source:
# Clone the repository
git clone https://github.com/jsade/domo-query-cli.git
cd domo-query-cli
# Enable Corepack for Yarn 4
corepack enable
# Install dependencies
yarn install
# Build standalone executable
yarn build:dist
# The executable will be in release/domo-query-cli
# Copy it to a directory in your PATH
cp release/domo-query-cli /usr/local/bin/
# Copy environment variables template
cp .env.example ~/.domo-cli/.env# Build TypeScript for development
yarn build
# Run development mode (watch for changes)
yarn dev
# Run the CLI locally without building
yarn start
# or
yarn shell# Build distributable executable for current platform
yarn build:dist
# Executable will be in release/domo-query-cli
# Archive will be in release/domo-query-cli-<platform>.zip# Run tests
yarn test
yarn test:watch # Watch mode
yarn test:coverage # With coverage
# Code quality
yarn check # Run all checks (format, lint, types)
yarn format # Format code
yarn lint # Lint code
yarn lint:fix # Fix linting issues
yarn typecheck # TypeScript type checking
# Generate API types from OpenAPI specs
yarn generate:typesEdit the .env file in the project root:
# Your Domo instance
DOMO_API_HOST=yourcompany.domo.com
# Authentication
# API Token
DOMO_API_TOKEN=your-api-token-here
# OAuth
DOMO_CLIENT_ID=your-client-id
DOMO_CLIENT_SECRET=your-client-secret
# Optional settings
DOMO_EXPORT_PATH=./exports
LOG_PATH=./logsAPI Token:
- Log into Domo → Admin → Security → Access Tokens
- Create new token with appropriate permissions
- Required for: dataflow execution, dataset property updates
OAuth Credentials:
- Go to Admin → Security → Client Management
- Create new client application
- Copy Client ID and Secret
- Sufficient for: read operations, listing resources
Note: Some operations require specific authentication methods. API tokens provide broader permissions than OAuth for write operations.
For corporate proxies, add to .env:
HTTPS_PROXY=http://proxy.company.com:8080
HTTP_PROXY=http://proxy.company.com:8080
NO_PROXY=localhost,127.0.0.1,*.internal.company.com
# For self-signed certificates (development only)
NODE_TLS_REJECT_UNAUTHORIZED=0-
Start the interactive CLI:
# If installed via install.sh domo-query-cli # Or run directly from release directory ./release/domo-query-cli # Or for development yarn start
-
Type
helpto see all available commands -
Begin exploring your data!
For non-interactive usage (scripts, automation, CI/CD), see CLI.md for comprehensive documentation.
Contributions are welcome! Start with:
- Repository Guidelines: AGENTS.md — structure, commands, and conventions
- Contributor guide: CONTRIBUTING.md — setup, workflow, tests, and release
📚 For comprehensive command documentation and non-interactive usage, see CLI.md
| Command | Description |
|---|---|
list-datasets [search] |
List all datasets with filtering and search |
get-dataset <id> |
Get detailed dataset information |
get-dataset-parents <id> |
Get immediate parents for a dataset (API-required); returns parent nodes keyed like DATAFLOW24 |
get-dataset-children <id> |
Get immediate children for a dataset (API-required); returns child nodes keyed like CARD123 |
update-dataset-properties <id> |
Update dataset name, description, tags (requires API token) |
list-dataflows [search] |
List or search dataflows |
get-dataflow <id> |
Get dataflow details and execution history |
execute-dataflow <id> |
Trigger a dataflow to run |
show-lineage <id> |
Visualize data lineage with Mermaid diagrams |
list-cards |
List all accessible Domo cards |
cache-status |
View or clear cache |
help |
Show all available commands |
# Start the interactive shell
domo-query-cli
# Inside the shell:
> list-datasets sales # Search for sales datasets
> get-dataset abc-123-def # Get specific dataset details
> execute-dataflow 12345 # Run a dataflow
> show-lineage abc-123 --diagram # Visualize data lineage
### Get Dataset Parents (JSON)
```bash
domo-query-cli get-dataset-parents <dataset-id> --format jsonReturns a JSON parents array of full nodes and a keyed map (<TYPE><ID>, e.g., DATAFLOW24) for O(1) lookup. Parent nodes include a name field when available (e.g., dataflow or dataset names).
domo-query-cli get-dataset-children <dataset-id> --format jsonReturns a JSON children array of full nodes and a keyed map (<TYPE><ID>, e.g., CARD1213...) for O(1) lookup. Child nodes include a name field when available (e.g., card title, dataset name, or dataflow name).
help # See all commands
### Non-Interactive Mode (Scripts & Automation)
```bash
# List datasets with pagination
domo-query-cli list-datasets --limit 10 --offset 20
# Update dataset properties
domo-query-cli update-dataset-properties abc-123 \
--name "Q4 Sales Data" \
--tags "sales,q4,2024" \
--no-confirm
# Execute dataflow with authentication
domo-query-cli --token YOUR_API_TOKEN execute-dataflow 12345
# Run in read-only mode (prevents destructive operations)
domo-query-cli --read-only list-dataflows
# Get JSON output for processing
domo-query-cli list-datasets --format json | jq '.data[]'
#!/bin/bash
# Monitor dataflow execution status
FLOW_ID="12345"
if domo-query-cli execute-dataflow "$FLOW_ID"; then
echo "Dataflow started successfully"
# Check execution status
domo-query-cli list-dataflow-executions "$FLOW_ID" --limit 1
else
echo "Failed to start dataflow"
exit 1
fi"Permission Denied"
chmod +x domo-query-cli"Developer cannot be verified"
- System Preferences → Security & Privacy → Allow Anyway
- Or run:
xattr -d com.apple.quarantine domo-query-cli
- Verify DOMO_API_HOST (no https://)
- Check credentials are valid
- For proxy: ensure HTTPS_PROXY is set
- For SSL: set NODE_TLS_REJECT_UNAUTHORIZED=0 (dev only)
- Ensure token has necessary permissions
- API tokens required for dataflow operations
- Use OAuth for dataset/card operations
- Check logs in LOG_PATH directory
- Clear cache with
cache-status --clear - Use tab completion for commands and IDs
Built with ❤️ for the Domo community
