@oxide-cli/oxide
v0.9.1
Published
CLI for scaffolding projects from remote templates and extending them with project addons
Readme
Oxide
Oxide is a Rust CLI for scaffolding JavaScript and TypeScript projects from remote Oxide templates and extending them with project addons.
It supports:
- creating a new project from a template
- checking cached templates and addons for updates before use
- authenticating against the Oxide service
- publishing GitHub repositories as Oxide templates
- installing cached addons and running addon commands inside a project
- upgrading the CLI from GitHub Releases with
oxide upgrade - notifying you when a newer Oxide version is available
Official website
The official Oxide website is oxide-cli.vercel.app.
Use it as the main guide for learning and using Oxide:
- Docs cover installation, authentication, templates, addons, publishing, and reference material.
- Templates lists available project starters.
- Addons lists reusable workflow addons.
This README keeps a quick CLI reference for the repository and package users. The website contains the full, up-to-date usage guide.
Installation
Quick install
Linux and macOS:
curl -sSL https://raw.githubusercontent.com/oxide-cli/oxide/main/install.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/oxide-cli/oxide/main/install.ps1 | iexUnix installers place the oxide binary in ~/.local/bin. Cargo installs it in ~/.cargo/bin. Make sure the relevant directory is in your PATH.
Install with npm
npm install -g @oxide-cli/oxideThe npm package downloads the matching prebuilt Oxide binary during postinstall.
Install with cargo
cargo install oxide-cliManual install from GitHub Releases
Download the latest release artifact for your platform:
Getting started
Most remote operations require authentication first:
oxide loginCreate a new project from a template:
oxide new my-app react-vite-tsOxide checks whether the cached template is current before generating the project. If a newer template version exists, it updates the local cache first.
Command overview
Top-level commands:
oxide new <NAME> <TEMPLATE_NAME>
oxide template <COMMAND>
oxide login
oxide logout
oxide account
oxide addon <COMMAND>
oxide upgrade
oxide completions <SHELL>
oxide use <ADDON_ID> <COMMAND>Template management:
oxide template install <TEMPLATE_NAME>
oxide template list
oxide template remove <TEMPLATE_NAME>
oxide template publish <GITHUB_REPOSITORY_URL>
oxide template update <GITHUB_REPOSITORY_URL>Addon management:
oxide addon install <ADDON_ID>
oxide addon list
oxide addon remove <ADDON_ID>
oxide addon publish <GITHUB_REPOSITORY_URL>
oxide addon update <GITHUB_REPOSITORY_URL>Addon execution:
oxide use <ADDON_ID> <COMMAND>Example:
oxide addon install drizzle
cd my-app
oxide use drizzle initUpgrade Oxide itself:
oxide upgradeInstall shell completions:
oxide completions zshSupported shells are bash, zsh, fish, and powershell.
Aliases:
oxide n ...foroxide new ...oxide t ...foroxide template ...oxide a ...foroxide addon ...oxide inforoxide loginoxide outforoxide logout
Common workflows
Install or refresh a template in the local cache:
oxide template install react-vite-tsWhen you run oxide new, Oxide also refreshes the template cache automatically if a newer version is available.
List cached templates:
oxide template listRemove a cached template:
oxide template remove react-vite-tsShow the authenticated account:
oxide accountPublish a GitHub repository as a template:
oxide template publish https://github.com/owner/repoUpdate a published template:
oxide template update https://github.com/owner/repoInstall an addon:
oxide addon install drizzleRun an installed addon command:
oxide use drizzle initWhen you run an addon command such as oxide use drizzle init, Oxide checks for a newer cached addon version first. If the add-on updated and the command is marked once: true, Oxide prompts you to re-run it.
List installed addons:
oxide addon listRemove a cached addon:
oxide addon remove drizzlePublish a GitHub repository as an addon:
oxide addon publish https://github.com/owner/repoUpdate a published addon:
oxide addon update https://github.com/owner/repoUpgrade the CLI to the latest release:
oxide upgradeAfter most commands, Oxide performs a background version check and prints a short upgrade notice when a newer CLI release is available.
Install shell completions:
oxide completions zshSupported shells are bash, zsh, fish, and powershell.
Local data and generated files
Oxide stores local state under ~/.oxide/:
- cached templates in
~/.oxide/cache/templates - cached addons in
~/.oxide/cache/addons - template cache index in
~/.oxide/cache/templates/oxide-templates.json - addon cache index in
~/.oxide/cache/addons/oxide-addons.json - CLI version-check cache in
~/.oxide/version_check.json - authentication data in
~/.oxide/auth.json
When addon commands run inside a project, Oxide records execution state in oxide.lock in the project root, including the add-on version used for each executed command.
Templates
Published templates are expected to include an oxide.template.json manifest in the template root. Oxide uses that manifest to track template metadata such as template name, version, and source repository.
Template files ending with .tera are rendered during project generation and written without the .tera suffix.
Available template variables:
project_nameproject_name_kebabproject_name_snake
Addons
Installed addons are expected to include an oxide.addon.json manifest. Oxide uses addon manifests to define:
- user inputs
- project detection rules
- command variants
- file modification steps such as create, copy, inject, replace, append, delete, rename, and move
License
Licensed under either of these:
- MIT license (LICENSE-MIT)
- Apache License 2.0 (LICENSE-Apache)
