ORAS .NET CLI
A cross-platform .NET 10 CLI for managing OCI artifacts in container registries — reimagined with a rich terminal UI.
✨ 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.