ORAS .NET CLI

A cross-platform .NET 10 CLI for managing OCI artifacts in container registries — reimagined with a rich terminal UI.

Get Started Command Reference


CI Release License


✨ Features

📦 OCI Artifact Management 🖥️ Interactive TUI ⚡ Native AOT
Push, pull, attach, and discover artifacts in any OCI-compliant registry Beautiful terminal UI powered by Spectre.Console for exploring registries and artifacts Lightning-fast cold start with self-contained single-file binaries
🌍 Cross-Platform 🔐 Docker Credentials 📊 Rich Progress
Runs on Windows, macOS (Intel & ARM), and Linux (x64 & ARM64) Seamless authentication using Docker config and credential helpers Real-time transfer progress with bandwidth and ETA tracking

🎉 v0.4.0 — All Commands Fully Functional!

All 21 commands now work with real OCI registries! Previous versions had only 3 working commands (login, logout, version). v0.4.0 implements all artifact, manifest, blob, and repository operations with the official OrasProject.Oras library.

Try oras push, oras pull, oras attach, oras discover, oras copy, oras backup, oras restore, and more — all fully functional!


🚀 Quick Start

Install

# Option 1: Download pre-built binary (Linux x64 example)
curl -LO https://github.com/shizhMSFT/oras-dotnet-cli/releases/download/v0.4.0/oras-linux-x64.tar.gz
tar -xzf oras-linux-x64.tar.gz && chmod +x oras-linux-x64
sudo mv oras-linux-x64 /usr/local/bin/oras

# Option 2: Build from source
git clone https://github.com/shizhMSFT/oras-dotnet-cli.git
cd oras-dotnet-cli && dotnet build -c Release

See the Installation Guide for detailed instructions.

Authenticate

# Log in to a container registry
oras login ghcr.io -u username -p token

# Log out when done
oras logout ghcr.io

Push & Pull Artifacts

# Push files as an OCI artifact
oras push ghcr.io/myorg/myartifact:v1.0 \
  ./config.yaml:application/yaml \
  ./data.json:application/json

# Pull an artifact
oras pull ghcr.io/myorg/myartifact:v1.0

Attach & Discover

# Attach artifacts (signatures, SBOMs)
oras attach ghcr.io/myorg/myartifact:v1.0 \
  --artifact-type signature/example \
  ./signature.sig

# Discover related artifacts
oras discover ghcr.io/myorg/myartifact:v1.0

Backup & Restore

# Backup an artifact locally
oras backup ghcr.io/myorg/myartifact:v1.0 --output ./backup

# Restore from backup
oras restore ./backup ghcr.io/myorg/myartifact-restored:v1.0

Launch the TUI

# Open the interactive terminal dashboard
oras

# Tip: Use "Browse Repository Tags" to explore any repo — even on registries
# that don't support catalog listing (like ghcr.io)

📖 Documentation

Guide Description
Command Reference Complete reference for all 21 commands and options
Installation Guide Platform-specific installation instructions
Migration Guide Switching from the Go oras CLI to the .NET CLI
TUI Guide Using the interactive terminal UI dashboard
TUI Showcase Visual tour of every TUI screen and feature
Shell Completions Tab completion for bash, zsh, PowerShell, fish

🏗️ Built With

Component Purpose
System.CommandLine Modern command-line parsing
Spectre.Console Beautiful terminal rendering
OrasProject.Oras Official ORAS .NET library
.NET 10 Self-contained, high-performance runtime

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.