Command reference
Run odyn <command> --help for the same information on the command line.
Global flags
Section titled “Global flags”These work on every command:
-q, --quietsuppresses the progress spinners.-v, --verboseprints the underlying git output.
odyn init
Section titled “odyn init”odyn init [PATH]Scaffold a new Odin project in PATH (defaults to the current directory). This
writes a main.odin, an ols.json that maps the deps collection, an empty
Odyn.lock, a .gitignore, and initializes a git repository.
Flags:
--commit-depscommits the contents ofdeps/(ignoring each dependency’s own nested.git). By defaultdeps/is gitignored and restored withodyn sync.--no-init-gitskips creating a git repository (one is created by default).--srcuses asrc/layout, placingmain.odininsrc/. By default it goes in the project root.--with-readmealso generates aREADME.md.--license <id>picks the license file. Defaults tomit. One ofmit,apache,gpl3,bsd2,bsd3,mpl2,unlicense,zlib,isc,custom.
odyn get
Section titled “odyn get”odyn get <URL> [-- GIT_ARGS...]Clone a dependency into deps/ and pin its current commit in Odyn.lock.
URL is either a full git URL or an owner/repo shorthand resolved against
--platform.
Flags:
-p, --platform <forge>resolves the shorthand form. Defaults togithub. One ofgithub,codeberg,gitlab,sourcehut(sr.ht),bitbucket,gitea,savannah,notabug,disroot,framagit.giteahas no single public instance, so pass a full URL for it.-n, --name <name>sets the folder created underdeps/. Defaults to the repository name.-t, --tag <tag>checks out a tag. Uselatestfor the newest semver tag, or a specific tag such asv1.2.0.- Anything after
--is forwarded verbatim togit clone.
odyn get odin-lang/examplesodyn get user/repo -p codeberg -n mydepodyn get https://codeberg.org/user/repo -t latestodyn get user/repo -- --depth 1odyn sync
Section titled “odyn sync”odyn syncRestore every dependency listed in Odyn.lock to its pinned commit. Run it on a
fresh checkout, or whenever deps/ has drifted.
Flags:
-f, --forcehard-resets locally modified dependencies to their pinned commit instead of aborting.--skip <name>skips a dependency during the pass. Repeatable.
odyn status
Section titled “odyn status”odyn statusShow the state of each dependency: whether it is present, missing, locally modified, or drifted from its pinned commit. Exits non-zero if anything is off, which makes it useful in CI.
odyn update
Section titled “odyn update”odyn update <NAME> [COMMIT]Update a dependency and re-pin it in the lockfile. With no COMMIT, it moves to
the latest commit; pass a COMMIT to pin a specific one.
Flags:
-t, --tag <tag>updates to a tag. Uselatestfor the newest semver tag, or a specific tag.-b, --branch <branch>tracks a branch: updates toorigin/<branch>HEAD and records the branch in the lockfile.
odyn remove
Section titled “odyn remove”odyn remove <NAME>Delete a dependency’s folder under deps/ and remove its entry from
Odyn.lock.
odyn list
Section titled “odyn list”odyn list <subcommand> [args]Manage package-list sources. A list is a git repository that describes packages for search and info to query.
odyn list add
Section titled “odyn list add”odyn list add <REPO>Add a package list from a repository URL (or a shorthand with --platform).
Flags:
-n, --name <name>override the list’s name (defaults to the metadata name or the repository name).-p, --platform <forge>resolves shorthand URLs. Same choices asodyn get --platform.
odyn list remove
Section titled “odyn list remove”odyn list remove <NAME>Remove a package list and delete its cache.
odyn list ls
Section titled “odyn list ls”odyn list lsList all added package lists with their names and repositories.
odyn list packages
Section titled “odyn list packages”odyn list packages <NAME>List every package provided by the named list.
odyn list show
Section titled “odyn list show”odyn list show <NAME>Show details about a list: its repository, data source (index file or README), and package count.
odyn list update
Section titled “odyn list update”odyn list update [NAME]Re-fetch a list’s cache. With a name, updates only that list; without one, updates every added list.
odyn list rename
Section titled “odyn list rename”odyn list rename <OLD> <NEW>Rename a package list.
odyn search
Section titled “odyn search”odyn search [QUERY]Search added package lists. Returns every package whose name or repo slug matches the query. With no query, at least one filter flag is required.
Flags:
-t, --tag <tag>filter by tag (repeatable; all must match).-l, --license <text>filter by license (substring match).-d, --in-description <text>filter by text in the description.
odyn search animaodyn search --tag 2d --license MITodyn search physics -d collisionodyn info
Section titled “odyn info”odyn info <PATH>Show details about a package. PATH is a bare identifier (name or repo slug)
scanned across all lists, or list:user/repo to narrow the scope.
odyn info animaodyn info awesome-odin:jakubtomsu/animaodyn completions
Section titled “odyn completions”odyn completions <shell>Generate shell completion scripts. Supports bash, zsh, fish, elvish,
powershell, and nushell.
odyn completions fish > ~/.config/fish/completions/odyn.fishodyn completions bash > /usr/local/share/bash-completion/completions/odyn