Command Palette
Search for a command to run

Repository Commands

Complete reference for all Outpost CLI repository commands — init, clone, add, commit, status, checkout, branch, fetch, pull, push, merge, log, diff, restore, remote, rm, ls, and df.

Repository commands provide Git-style version control for datasets, models, and code. They handle everything from cloning and committing to branching and merging, with native support for large files and efficient data transfer.

Familiar workflow
If you've used Git before, these commands work the same way. The key difference is that Outpost is optimized for large files and ML artifacts -- pushing a 10 GB dataset is as straightforward as pushing a Python script.

outpost init

Initialize a new Outpost repository in the current directory or at a specified path.

Syntax

outpost init [OPTIONS] [PATH]

Arguments

PATH
type: string
Directory path where the repository should be initialized. Defaults to the current directory.

Options

Option Description
--storage-backend <backend> Storage backend to use: local or s3
-h, --help Display help

Examples

# Initialize a repository in the current directory outpost init # Initialize at a specific path outpost init ./my-project # Initialize with S3 storage backend outpost init --storage-backend s3
What outpost init creates
Running `outpost init` creates a `.outpost/` directory in your project root. This directory stores repository metadata, configuration, and internal state. Do not delete it manually.

outpost clone

Clone a repository from a URL into a new local directory.

Syntax

outpost clone [OPTIONS] <URL> [DESTINATION]

Arguments

URL
type: string
required
The URL of the repository to clone. Accepts Outpost URLs (https://outpost.run/...) or other remote repository URLs.
DESTINATION
type: string
Local directory name to clone into. Defaults to the repository name.

Options

Option Description
--filter <filter> Clone only a specific directory or subpath
--depth <depth> Limit directory tree depth (used with --filter)
--all Download full commit history, all data files, and commit databases
-h, --help Display help

Examples

# Clone a repository outpost clone https://outpost.run/jane/image-dataset # Clone into a specific directory outpost clone https://outpost.run/jane/image-dataset ./my-copy # Clone a specific subdirectory outpost clone https://outpost.run/jane/earth-observation --filter data/india --depth 2 # Full clone with all history outpost clone https://outpost.run/jane/genomics --all

outpost add

Stage files or directories for the next commit.

Syntax

outpost add <FILES>...

Arguments

FILES
type: string
required
One or more file or directory paths to stage. Accepts relative or absolute paths. Multiple files can be separated by spaces.

Examples

# Stage a single file outpost add data/cleaned.csv # Stage multiple files outpost add data/cleaned.csv notebooks/analysis.ipynb # Stage an entire directory outpost add data/ # Stage all files in the current directory outpost add .
Check what's staged
Run `outpost status` to see which files are staged, modified, or untracked before committing.

outpost commit

Record staged changes to the repository history.

Syntax

outpost commit [OPTIONS] -m "<MESSAGE>"

Options

Option Description
-m, --message <message> (Required) Commit message describing the changes
--allow-empty Allow creating a commit with no staged changes
-h, --help Display help

Examples

# Commit with a message outpost commit -m "Add training data for Q1" # Typical stage-and-commit workflow outpost add scripts/train.py outpost commit -m "Refactor training script with early stopping" # Create an empty commit (e.g., to trigger a CI pipeline) outpost commit --allow-empty -m "Trigger rebuild"

Commit message guidelines

Write messages that explain why the change was made, not just what changed.

Good: Fix missing rows in user analytics CSV, Add validation for empty input in pipeline

Avoid: update, changes, fixed stuff


outpost status

Show the current state of the working tree and staging area.

Syntax

outpost status [OPTIONS]

Options

Option Description
--skip <n> Skip the first n entries in the output
--limit <n> Limit the number of entries shown
--ignore <pattern> Ignore files matching the given pattern
-h, --help Display help

Examples

# View staged, modified, and untracked files outpost status # Limit output to the first 20 entries outpost status --limit 20 # Skip the first 10 entries outpost status --skip 10 # Ignore certain files in the output outpost status --ignore "*.tmp"

The output shows files grouped by state: staged (ready to commit), modified (changed but not staged), and untracked (new files not yet added).


outpost checkout

Switch branches, create new branches, or resolve merge conflicts.

Syntax

outpost checkout [OPTIONS] [NAME]

Arguments

NAME
type: string
Branch name or commit ID to check out.

Options

Option Description
-b, --create <name> Create a new branch and switch to it
--ours Resolve merge conflicts using the current branch's version
--theirs Resolve merge conflicts using the incoming branch's version
-h, --help Display help

Examples

# Switch to an existing branch outpost checkout dev # Create and switch to a new branch outpost checkout -b feature/data-cleanup # Check out a specific commit (enters detached HEAD state) outpost checkout 4f8c2e1 # Resolve merge conflicts -- keep your changes outpost checkout --ours # Resolve merge conflicts -- accept incoming changes outpost checkout --theirs
Uncommitted changes
If you have uncommitted changes that conflict with the target branch, the checkout will fail. Commit your work first.

outpost branch

List, create, rename, or delete branches.

Syntax

outpost branch [OPTIONS] [NAME]

Arguments

NAME
type: string
Name of the branch to create or operate on.

Options

Option Description
-a, --all List both local and remote branches
-r, --remote <remote> List branches on a specific remote
-d, --delete <branch> Delete a merged local branch
-D, --force-delete <branch> Force-delete a local branch (even if unmerged)
-m, --move <name> Rename the current branch
--show-current Print the name of the current branch
-h, --help Display help

Examples

# List local branches outpost branch # List all branches (local + remote) outpost branch --all # Create a new branch outpost branch feature/new-dataset # Show current branch name outpost branch --show-current # Delete a merged branch outpost branch -d feature/old-experiment # Force-delete an unmerged branch outpost branch -D feature/wip # Rename the current branch outpost branch -m feature/data-updates # List branches on a specific remote outpost branch --remote origin

outpost fetch

Fetch changes from a remote repository without merging them into your local branch.

Syntax

outpost fetch [OPTIONS]

Options

Option Description
-b, --branch <branch> Fetch a specific branch only
-h, --help Display help

Examples

# Fetch all remote changes outpost fetch # Fetch a specific branch outpost fetch -b dev

outpost pull

Fetch and merge changes from a remote branch into your local branch.

Syntax

outpost pull [OPTIONS] [REMOTE] [BRANCH]

Arguments

REMOTE
type: string
Remote repository to pull from. Defaults to `origin`.
BRANCH
type: string
Branch to pull. Defaults to the current branch.

Options

Option Description
--all Download entire commit history, all data files, and commit databases
-h, --help Display help

Examples

# Pull latest changes outpost pull # Pull from a specific branch outpost pull origin dev # Pull full history and all data outpost pull --all
Pull before you push
Always run `outpost pull` before pushing to minimize merge conflicts and ensure you're building on the latest version of the data.

outpost push

Upload local commits and files to a remote branch.

Syntax

outpost push [OPTIONS] [REMOTE] [BRANCH]

Arguments

REMOTE
type: string
Remote repository to push to. Defaults to `origin`.
BRANCH
type: string
Branch to push. Defaults to the currently checked-out branch.

Options

Option Description
-d, --delete Delete the specified branch from the remote
--missing-files Push even when some files are missing locally
-h, --help Display help

Examples

# Push current branch to origin outpost push # Push a specific branch outpost push origin dev # Push to a different remote outpost push upstream main # Delete a remote branch outpost push -d origin feature/old-dataset # Push with missing local files outpost push --missing-files
Rejected pushes
If the remote has commits you don't have locally, the push will be rejected. Pull and merge first: `outpost pull` then `outpost push`.

outpost merge

Merge a branch into the currently checked-out branch.

Syntax

outpost merge [BRANCH]

Arguments

BRANCH
type: string
The name of the branch to merge into your current branch.

Merge behavior

Scenario Behavior
No divergence Fast-forward merge -- advances the branch pointer without a new commit
Diverged histories Three-way merge -- compares both branches against a common ancestor
Conflicts detected Writes conflicts to disk for manual resolution
No conflicts Automatically creates a merge commit

Conflict resolution

When conflicts occur, resolve them using outpost checkout:

# Keep the current branch's version outpost checkout --ours # Accept the incoming branch's version outpost checkout --theirs # Then commit the resolution outpost commit -m "Resolve merge conflicts"

Examples

# Merge a feature branch into the current branch outpost merge feature/data-cleanup # Full merge workflow outpost checkout main outpost merge feature/data-cleanup outpost push

outpost log

View the commit history for the current branch.

Syntax

outpost log

Examples

# View commit history outpost log

Displays a chronological list of commits with their hashes, authors, timestamps, and messages.


outpost diff

Show differences between files or commits.

Syntax

outpost diff

Examples

# Show all uncommitted changes outpost diff

outpost restore

Restore files from a previous commit.

Syntax

outpost restore

Examples

# Restore files from the latest commit outpost restore

outpost remote

Manage remote repository connections.

Syntax

outpost remote [COMMAND]

Examples

# List all remotes outpost remote # Add a new remote outpost remote add origin https://outpost.run/jane/image-dataset

outpost rm

Remove files from the repository.

Syntax

outpost rm <PATH>

Arguments

PATH
type: string
required
File path to remove from version tracking.

Examples

# Remove a file outpost rm data/outdated.csv # Remove and commit outpost rm data/temp.csv outpost commit -m "Remove temporary data file"
Destructive operation
`outpost rm` removes files from both the working directory and the staging area. The files will still exist in previous commits and can be recovered using `outpost restore`.

outpost ls

List contents of the repository.

Syntax

outpost ls

Examples

# List all tracked files in the repository outpost ls

outpost df

View and transform data frames from tabular files such as CSV and Parquet.

Syntax

outpost df <PATH>

Arguments

PATH
type: string
required
Path to a tabular data file (CSV, Parquet, etc.) to view or transform.

Examples

# View a CSV file as a data frame outpost df data/training.csv # View a Parquet file outpost df data/features.parquet

Common workflows

Start a new project

mkdir my-project && cd my-project outpost init outpost add . outpost commit -m "Initial commit" outpost remote add origin https://outpost.run/jane/my-project outpost push origin main

Daily development cycle

outpost pull # Get latest changes # ... make edits ... outpost add data/ scripts/ outpost commit -m "Add new training data" outpost push

Feature branch workflow

outpost checkout -b feature/new-model # Create feature branch # ... develop ... outpost add . outpost commit -m "Implement new model architecture" outpost push origin feature/new-model # When ready, merge back outpost checkout main outpost pull outpost merge feature/new-model outpost push outpost branch -d feature/new-model # Clean up

Previous Overview

Next Compute Commands