oxide-cli 0.7.1

⚡ Lightning-fast project scaffolding tool for modern JavaScript/TypeScript development
Documentation

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
  • caching templates locally and skipping unchanged downloads
  • authenticating against the Oxide service
  • publishing GitHub repositories as Oxide templates
  • installing cached addons and running addon commands inside a project

Installation

Quick install

Linux and macOS:

curl -sSL https://raw.githubusercontent.com/oxide-cli/oxide/main/install.sh | bash

Windows PowerShell:

irm https://raw.githubusercontent.com/oxide-cli/oxide/main/install.ps1 | iex

Unix 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 @maksym-zhuk/oxide-cli

The npm package downloads the matching prebuilt Oxide binary during postinstall.

Install with cargo

cargo install oxide-cli

Manual install from GitHub Releases

Download the latest release artifact for your platform:

Getting started

Most remote operations require authentication first:

oxide login

Create a new project from a template:

oxide new my-app react-vite-ts

If the template is not cached yet, Oxide downloads it automatically before generating the project.

Command overview

Top-level commands:

oxide new <NAME> <TEMPLATE_NAME>
oxide template <COMMAND>
oxide login
oxide logout
oxide account
oxide addon <COMMAND>
oxide <ADDON_ID> <COMMAND>

Template management:

oxide template install <TEMPLATE_NAME>
oxide template list
oxide template remove <TEMPLATE_NAME>
oxide template publish <GITHUB_REPOSITORY_URL>

Addon management:

oxide addon install <ADDON_ID>
oxide addon list
oxide addon remove <ADDON_ID>

Addon execution:

oxide <ADDON_ID> <COMMAND>

Example:

oxide addon install drizzle
cd my-app
oxide drizzle init

Aliases:

  • oxide n ... for oxide new ...
  • oxide t ... for oxide template ...

Common workflows

Install or refresh a template in the local cache:

oxide template install react-vite-ts

List cached templates:

oxide template list

Remove a cached template:

oxide template remove react-vite-ts

Show the authenticated account:

oxide account

Publish a GitHub repository as a template:

oxide template publish https://github.com/owner/repo

Install an addon:

oxide addon install drizzle

List installed addons:

oxide addon list

Remove a cached addon:

oxide addon remove drizzle

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
  • authentication data in ~/.oxide/auth.json

When addon commands run inside a project, Oxide records execution state in oxide.lock in the project root.

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, source repository, and whether the template is official.

Template files ending with .tera are rendered during project generation and written without the .tera suffix.

Available template variables:

  • project_name
  • project_name_kebab
  • project_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

Development

Run the CLI locally:

cargo run -- --help

Run tests:

cargo test

License

Licensed under either of these: