id = "oxen"
name = "Oxen"
homepage = "https://www.oxen.ai/"
description = "Data VCS for structured and unstructured machine learning datasets"
executables = ["oxen"]
[dotfiles]
paths = []
secret = ["~/.config/oxen/auth_config.toml", "~/.oxen/user_config.toml"]
[commands]
format = 1
label = "Oxen"
description = "Common Oxen version-control jobs: add, commit, clone and push. Other subcommands are not covered."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["add"]
label = "Stage files"
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Oxen-AI/Oxen/blob/HEAD/crates/oxen-cli/src/cmd/add.rs"
revision = "HEAD 2026-10-27"
evidence = """
.about("Adds the specified files or directories")
Arg::new("files")
"""
[[commands.subcommand.field]]
id = "files"
label = "Files or directories"
type = "path"
path = { kind = "any", role = "input" }
position = 0
multiple = true
sources = ["src"]
[[commands.subcommand.task]]
id = "add"
label = "Stage files"
fields = ["files"]
required = ["files"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["files"]
[[commands.subcommand]]
path = ["commit"]
label = "Commit staged files"
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Oxen-AI/Oxen/blob/HEAD/crates/oxen-cli/src/cmd/commit.rs"
revision = "HEAD 2026-10-27"
evidence = """
.about("Commit the staged files to the repository.")
.help("The message for the commit. Should be descriptive about what changed.")
.long("message") --message
.short('m') -m
.help("Allow creating a commit with no changes")
.long("allow-empty") --allow-empty
"""
[[commands.subcommand.field]]
id = "message"
label = "Commit message"
type = "string"
option = ["--message", "-m"]
sources = ["src"]
[[commands.subcommand.field]]
id = "allow_empty"
label = "Allow empty commit"
type = "boolean"
option = ["--allow-empty"]
sources = ["src"]
[[commands.subcommand.task]]
id = "commit"
label = "Commit"
fields = ["message"]
required = ["message"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["message", "allow_empty"]
[[commands.subcommand]]
path = ["clone"]
label = "Clone a repository"
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Oxen-AI/Oxen/blob/HEAD/crates/oxen-cli/src/cmd/clone.rs"
revision = "HEAD 2026-10-27"
evidence = """
.about("Clone a repository by its URL")
.long("filter") --filter
.long("depth") --depth
.long("all") --all
.short('a') -a
.long("branch") --branch
.short('b') -b
.help("The branch you want to pull to when you clone.")
"""
[[commands.subcommand.field]]
id = "url"
label = "Repository URL"
type = "url"
position = 0
sources = ["src"]
[[commands.subcommand.field]]
id = "branch"
label = "Branch"
type = "string"
option = ["--branch", "-b"]
sources = ["src"]
[[commands.subcommand.field]]
id = "all"
label = "Full history and data"
type = "boolean"
option = ["--all", "-a"]
sources = ["src"]
[[commands.subcommand.field]]
id = "filter"
label = "Directory filter"
type = "string"
option = ["--filter"]
sources = ["src"]
[[commands.subcommand.field]]
id = "depth"
label = "Subtree depth"
description = "Used together with the filter."
type = "integer"
option = ["--depth"]
sources = ["src"]
[[commands.subcommand.task]]
id = "clone"
label = "Clone"
fields = ["url", "branch"]
required = ["url"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["url", "branch", "all", "filter", "depth"]
[[commands.subcommand]]
path = ["push"]
label = "Push to a remote"
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Oxen-AI/Oxen/blob/HEAD/crates/oxen-cli/src/cmd/push.rs"
revision = "HEAD 2026-10-27"
evidence = """
.about("Push the files to the remote branch")
.help("Remote you want to push to")
.help("Branch name to push to")
.long("delete") --delete
.short('d') -d
.help("Remove the remote branch")
.long("force") --force
.short('f') -f
.help("Force push even if the remote branch is not a fast-forward")
"""
[[commands.subcommand.field]]
id = "remote"
label = "Remote"
type = "string"
position = 0
sources = ["src"]
[[commands.subcommand.field]]
id = "branch"
label = "Branch"
type = "string"
position = 1
sources = ["src"]
[[commands.subcommand.field]]
id = "delete"
label = "Delete the remote branch"
type = "boolean"
option = ["--delete", "-d"]
effect = "delete"
sources = ["src"]
[[commands.subcommand.field]]
id = "force"
label = "Force push"
type = "boolean"
option = ["--force", "-f"]
effect = "overwrite"
sources = ["src"]
[[commands.subcommand.task]]
id = "push"
label = "Push"
fields = ["remote", "branch"]
required = ["remote", "branch"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["remote", "branch", "delete", "force"]