A Python CLI tool for chunking, uploading, and managing documentation files (Markdown, HTML, JSON, PDF) and images in a Domo vector index or Fileset. Supports robust batching, error handling, retry logging, and configuration via .env.
- Chunk and upload Markdown, HTML, JSON, and PDF files to a Domo vector index
- Process and embed image files (PNG, JPG, JPEG, GIF, BMP, WebP, TIFF) for vector search
- Robust batch uploads with error handling and retry logging (failed uploads are logged for retry)
- Delete nodes from a vector index:
- By node ID (
vector delete-by-id) - By group ID (
vector delete-by-group) - Delete all nodes from an index (
vector delete-all)
- By node ID (
- Fetch all node IDs from an index (
vector get-all) - Configure your Domo API key and instance URL interactively
- Create new FileSets
- Upload files or entire directories to FileSets
- Download files from FileSets
- Get FileSet metadata and list files
- Search FileSets by name or metadata with pagination support
- Fetch file text content directly (without saving to disk)
- Python 3.8 or higher - Check with
python --versionorpython3 --version - pip - Python package installer (usually comes with Python)
- Git - For cloning the repository
- Domo Instance Access - You need access to a Domo instance (e.g.,
your-company.domo.com) - Developer Token - A Domo Developer API token with appropriate permissions
- Log into your Domo instance
- Go to Admin > Authentication > Access Tokens
- Create a new Developer Token and make sure you save it somewhere safe for reference
-
Clone the repository:
git clone [email protected]:DomoApps/domo-vector-cli.git cd domo-vector-cli
-
Install dependencies and the CLI tool locally:
pip install -e .This will make the
domo-vectorcommand available globally.
Before using the CLI, configure your Domo API key and instance:
domo-vector configure- Enter your Domo Developer API key when prompted.
- Enter your Domo instance name (e.g.
your-instance.domo.com). - This will create/update a
.envfile in the project directory with the necessary credentials.
domo-vector helpdomo-vector configure- Set up API credentials and instance URL
domo-vector vector upload- Upload and chunk files to vector indexdomo-vector vector delete-all --index-id <id>- Delete all nodes in indexdomo-vector vector delete-by-id --index-id <id> --node-ids <id1> <id2>- Delete specific nodesdomo-vector vector delete-by-group --index-id <id> --group-ids <group1>- Delete nodes by groupdomo-vector vector get-all --index-id <id>- Get all node IDs
domo-vector fileset create --name <name>- Create new Filesetdomo-vector fileset upload-file --fileset-id <id> --file-path <path>- Upload filedomo-vector fileset upload-file --fileset-id <id> --directory <dir>- Upload directorydomo-vector fileset get-file --fileset-id <id> --file-path <path>- Download filedomo-vector fileset get-fileset --fileset-id <id>- Get Fileset metadatadomo-vector fileset get-filesets- List all Filesetsdomo-vector fileset search-filesets- Search Filesets with name filtering and pagination
Index Types:
- Environment-specific indexes: Indexes that are scoped to your current Domo environment
Upload text documents:
domo-vector vector upload --source-dir ./documentation --index-id your-index-idUpload with image processing:
domo-vector vector upload --source-dir ./documentation --index-id your-index-id --include-imagesOptions:
--source-dir: Source directory containing files (required)--index-id: ID for the vector index (optional if set in.envasVECTOR_INDEX_ID)--include-images: Process and embed image files along with text documents--dry-run: Preview what would be uploaded without actually uploading--no-create-index: Skip index creation, just upload to existing index--chunk-size: Maximum characters per text chunk (default: 1500)--overlap: Overlapping characters between chunks (default: 200)--group-id: Group ID for uploaded nodes (defaults to filename)
domo-vector vector delete-by-id --index-id your-index-id --node-ids id1 id2 ...domo-vector vector delete-by-group --index-id your-index-id --group-ids group1 group2 ...domo-vector vector delete-all --index-id your-index-iddomo-vector vector get-all --index-id your-index-iddomo-vector fileset create --name "My Fileset" --description "Docs Fileset"domo-vector fileset upload-file --fileset-id <fileset-id> --file-path ./path/to/file.mddomo-vector fileset upload-file --fileset-id <fileset-id> --directory ./path/to/docsdomo-vector fileset get-file --fileset-id <fileset-id> --file-path <remote/path.md>Or by file ID:
domo-vector fileset get-file --fileset-id <fileset-id> --file-id <file-id>domo-vector fileset get-fileset --fileset-id <fileset-id>domo-vector fileset get-filesetsSearch filesets with optional name filtering and pagination:
domo-vector fileset search-filesets --limit 10 --offset 0 --name "docs"Options:
--limit: Maximum number of filesets to return (default: 10)--offset: Offset for pagination (default: 0)--name: Search filesets by name (partial matching supported)
- Markdown (
.md) - JSON (
.json) - PDF (
.pdf) - HTML (
.html) - Plain text (
.txt)
- PNG (
.png) - JPEG (
.jpg,.jpeg) - GIF (
.gif) - BMP (
.bmp) - WebP (
.webp) - TIFF (
.tiff)
- All source code is in the
domo_vector_cli/directory. - Tests are in the
tests/directory. Run with:pytest
- For async test support, ensure
pytest-asynciois installed (already in requirements.txt). - To check test coverage:
pytest --cov=domo_vector_cli
- To update dependencies, edit
requirements.txtand reinstall withpip install -e .
The CLI uses a .env file for configuration. Example:
DOMO_DEVELOPER_TOKEN=your-api-key-here
DOMO_API_URL_BASE=https://your-instance.domo.com/api
VECTOR_INDEX_ID=your-default-index-id
To uninstall the CLI:
pip uninstall domo-vectorMIT (or your chosen license)
- If you see coroutine warnings, ensure
pytest-asynciois installed and you have reinstalled withpip install -e .. - For API errors, check your
.envvalues and Domo permissions. - For more help, run:
domo-vector help