Introduction

ExoHub brings Git-style version control to your datasets. Just like you version code with Git, ExoHub lets you version, share, and collaborate on data — with full history, branching, and merge capabilities.

Why ExoHub?

If you’ve ever struggled with:

Then ExoHub is for you.

How It Works

ExoHub is built on git-annex , a powerful tool that extends Git to handle large files. The exo CLI wraps git-annex with a simpler interface designed for data scientists.

Here’s the key insight: Git tracks pointers, storage backends hold the actual data.

┌─────────────────────────────────────────────────────────┐
│                    Your Repository                       │
├─────────────────────────────────────────────────────────┤
│  README.md          ← regular file (in Git)             │
│  notebooks/         ← regular files (in Git)            │
│  data/train.parquet ← pointer (in Git) → actual data    │
│  data/test.parquet  ← pointer (in Git) → actual data    │
└─────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│                   Storage Backends                       │
├─────────────────────────────────────────────────────────┤
│  S3 bucket     │  On-prem HPC    │  Your laptop         │
│  (primary)     │  (cache)        │  (working copy)      │
└─────────────────────────────────────────────────────────┘

When you clone a repository, you get the structure and metadata immediately. The actual data files are downloaded on-demand when you run exo sync.

Key Concepts

Repositories

An ExoHub repository is a Git repository with git-annex enabled. It contains:

Remotes

Remotes are storage locations where your data lives. ExoHub supports several types:

TypeDescriptionExample
annexContent-addressed storageS3 bucket with git-annex layout
exportHuman-readable file layoutS3 bucket with original filenames
importPull data from external sourcesExisting S3 bucket
exospaceGeo-localized caching layerLocal or regional cache for faster access
artifactdbCatalog publishing remoteArtifactDB instance with S3 storage

Most repositories have at least one annex remote for primary storage.

Syncing

Syncing is the process of transferring data between your local machine and remotes:

Clone Presets

Large datasets often contain more than you need. Clone presets let you download just the parts you want:

# Clone auto-discovers presets and shows selection
exo clone https://github.com/org/dataset.git

# Use a specific preset directly
exo clone --preset notebooks https://github.com/org/dataset.git

Presets are defined in .exohub/presets and can specify which directories to include (sparse checkout).

The exo CLI

The exo command is your interface to ExoHub. Here are the commands you’ll use most often:

CommandWhat it does
exo loginAuthenticate with your credentials
exo cloneClone a dataset repository
exo initInitialize a new repository or configure remotes
exo syncBidirectional data synchronization with remotes
exo getDownload specific files without a full sync
exo addStage files with repository-level git/annex routing rules
exo broadcastShare metadata updates with remotes (no data transfer)
exo contextManage git host configurations (create, list, show, update, delete)
exo infoShow repository and remote information
exo bundleGenerate JSON metadata bundles for catalog ingest
exo atlasBrowse and search an ArtifactDB catalog (interactive TUI)
exo downloadDownload artifact files from the catalog
exo locateShow where files are stored across remotes
exo themeCustomize terminal color theme and dark/light mode
exo mcpStart the MCP server for AI assistant integration
exo safeManage SSH keys and git tokens in ExoSafe
exo tipShow a random tip from the ExoHub tip bank

We’ll cover each of these in detail throughout this guide.

Next Steps

Ready to install the CLI? Continue to Installation & Setup .