Named after Ratatoskr - is a squirrel who runs up and down the world tree Yggdrasil to carry messages between the eagles perched atop it and the serpent Níðhöggr who dwells beneath one of the three roots of the tree.
An AI-powered terminal application with Claude integration, built for Windows and macOS. RatatoCLI combines the power of a traditional command-line interface with AI assistance to enhance developer productivity.
- 🤖 AI-powered command assistance using Claude
- 🎨 Modern terminal user interface
- ⌨️ Vim-style modal editing
- 📜 Command history and navigation
- 🔄 Automatic session management
- 🎯 Multi-tier subscription support
- 🔐 Windows Store integration
- ⚡ Azure Functions backend integration
An AI-powered terminal application with Claude integration and Windows Store licensing.
- Prerequisites
- Project Setup
- Local Development
- Azure Backend Setup
- Building the Windows Package
- Windows Store Publishing
- Architecture
- Rust (latest stable version)
- Node.js 18+
- Azure CLI
- Windows 10/11 SDK
- Visual Studio 2019 or newer with:
- .NET Desktop Development workload
- Universal Windows Platform development workload
- Windows Store Developer Account
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Windows SDK (if not already installed)
winget install Microsoft.WindowsSDK
# Install Azure Functions Core Tools
npm install -g azure-functions-core-tools@4
# Install Terraform
choco install terraform
# Install WiX Toolset
choco install wixtoolset
- Clone the repository:
git clone https://github.com/yourusername/smart-terminal
cd smart-terminal
- Create environment files:
.env
for the terminal:
API_BASE_URL=https://your-azure-function-url
STORE_PRODUCT_ID=your-windows-store-product-id
azure/terraform.tfvars
:
environment = "prod"
location = "eastus"
anthropic_api_key = "your-key-here"
microsoft_auth_secret = "your-store-secret"
- Build and run the terminal:
cargo build
cargo run
- Run the Azure Function locally:
cd azure
npm install
func start
- Initialize Terraform:
cd azure
terraform init
- Deploy infrastructure:
terraform plan
terraform apply
- Deploy the Function:
func azure functionapp publish smart-terminal-api
- Configure version information in
Cargo.toml
:
[package]
version = "1.0.0"
- Build release version:
cargo build --release
- Create application manifest (AppxManifest.xml):
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
<Identity
Name="YourCompany.SmartTerminal"
Publisher="CN=YourPublisherID"
Version="1.0.0.0" />
<!-- ... rest of the manifest ... -->
</Package>
- Prepare assets:
assets/
├── Square150x150Logo.png
├── Square44x44Logo.png
├── StoreLogo.png
└── Wide310x150Logo.png
- Create app package:
# Create directory structure
mkdir AppPackages
mkdir AppPackages/SmartTerminal
copy target/release/smart-terminal.exe AppPackages/SmartTerminal/
copy AppxManifest.xml AppPackages/SmartTerminal/
xcopy /E assets AppPackages/SmartTerminal/assets/
# Create MSIX package
makeappx.exe pack /d AppPackages/SmartTerminal /p SmartTerminal.msix
- Sign the package:
# Create certificate (if you don't have one)
New-SelfSignedCertificate -Type Custom -Subject "CN=YourCompany" -KeyUsage DigitalSignature -FriendlyName "Smart Terminal Certificate" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
# Export certificate
$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<certificate-thumbprint>" -FilePath SmartTerminal.pfx -Password $password
# Sign package
signtool.exe sign /fd SHA256 /a /f SmartTerminal.pfx /p YourPassword SmartTerminal.msix
-
Register in Partner Center:
- Go to Partner Center
- Complete account setup
- Pay registration fee (if required)
-
Create app submission:
- Go to "Apps and Games"
- Click "Create a new app"
- Reserve app name
- Set pricing and availability
- Configure Store listing
- Set up age ratings
-
Configure product offerings:
Subscription Tiers:
- Free: 50 queries/month
- Basic: 500 queries/month ($4.99/month)
- Pro: 2000 queries/month ($9.99/month)
- Enterprise: 10000 queries/month ($49.99/month)
-
Submit for certification:
- Upload signed .msix package
- Complete store listing
- Provide testing notes
- Submit for review
-
Post-submission:
- Monitor certification status
- Address any certification feedback
- Prepare for launch
- Rust-based TUI using Ratatui
- Windows Store licensing integration
- Azure Function API integration
- Local storage for preferences and history
- Azure Functions for API handling
- Key Vault for secret management
- Table Storage for usage tracking
- Store authentication validation
- License validation
- Subscription management
- Usage quota enforcement
- Automatic updates
- Package Signing Errors:
# Check certificate validity
certutil -verify SmartTerminal.pfx
# Verify package
signtool.exe verify /pa SmartTerminal.msix
- Store Submission Errors:
- Ensure all required capabilities are declared in manifest
- Verify assets meet size requirements
- Check that version numbers match across all files
- Azure Function Issues:
# Check function logs
func azure functionapp logstream smart-terminal-api
This repo is under a AGPL-3.0 license with a CLA.