raibid-cli
Meta-management CLI for the raibid-labs GitHub organization
A terminal-based meta-management tool that provides organization-wide repository operations with an interactive TUI interface. Built with Rust, ratatui, and modern async patterns.
Overview
raibid-cli is designed to streamline the management of all repositories within the raibid-labs GitHub organization. It combines powerful command-line operations with an intuitive terminal user interface, enabling developers to efficiently clone, synchronize, and manage dozens of repositories simultaneously.
Key Features
- Organization-Wide View: See all raibid-labs repositories at a glance
- Batch Operations: Clone or sync multiple repositories concurrently
- Interactive TUI: Navigate and manage repos with a keyboard-driven interface
- Smart Filtering: Filter repositories by name, language, activity, and more
- Safe by Default: Detects uncommitted changes and prevents destructive operations
- Configuration-Driven: Customize behavior via TOML configuration files
- Fast & Efficient: Built with Rust for maximum performance
Quick Start
Prerequisites
- Rust 1.70 or later
- GitHub CLI (
gh) installed and authenticated - Just (for build automation) -
cargo install just - Nushell (for automation scripts) - optional but recommended
Installation
# Clone the repository
git clone https://github.com/raibid-labs/raibid-cli.git
cd raibid-cli
# Build the project
just build
# Or build release version
just build-release
# Install globally
just install-cliBasic Usage
# List all repositories
raibid list
# List with filtering
raibid list --filter "hack-*"
# Clone all repositories
raibid clone --all
# Sync all repositories
raibid sync --all
# Dry run to see what would happen
raibid sync --all --dry-run
# Launch interactive TUI
raibid tui
# Show help
raibid --helpArchitecture
raibid-cli follows a modular architecture with three main components:
- Core Library (
raibid-core) - Reusable functionality for GitHub API, Git operations, and synchronization - CLI Interface - Command-line interface using clap for scripting and automation
- TUI Interface - Interactive terminal UI using ratatui for visual management
See architecture.md for detailed architecture documentation.
Project Structure
raibid-cli/
├── src/ # CLI application source
│ └── main.rs # Main entry point
├── crates/
│ └── raibid-core/ # Core library
│ └── src/
│ ├── config.rs # Configuration management
│ ├── error.rs # Error types
│ ├── filter.rs # Repository filtering
│ ├── git.rs # Git operations
│ ├── github.rs # GitHub API integration
│ ├── sync.rs # Synchronization engine
│ └── types.rs # Shared data types
├── docs/ # Documentation
│ ├── architecture.md # Architecture overview
│ ├── roadmap.md # Development roadmap
│ ├── research-git-sync.md
│ └── research-raibid-labs-org.md
├── scripts/ # Nushell automation scripts
│ ├── discover-repos.nu # Repository discovery
│ ├── validate.nu # Project validation
│ └── sync-repos.nu # Repository synchronization
├── justfile # Build automation recipes
├── Cargo.toml # Workspace manifest
└── README.md # This file
Development
Building
# Development build
just build
# Release build
just build-release
# Clean build artifacts
just cleanTesting
# Run all tests
just test
# Run tests with output
just test-verbose
# Run specific test
just test-name <test_name>
# Generate coverage report
just test-coverageCode Quality
# Check code
just check
# Run linter
just lint
# Auto-fix lint issues
just lint-fix
# Format code
just fmt
# Run all CI checks
just ciDevelopment Workflow
# Watch and rebuild on changes
just watch
# Watch and rerun tests
just watch-test
# Setup dev environment
just setup-dev
# Quick start demo
just quick-startConfiguration
raibid-cli uses a TOML configuration file located at ~/.config/raibid-cli/config.toml.
Example configuration:
[general]
org = "raibid-labs"
workspace_root = "~/raibid-labs"
[sync]
concurrency = 5
auto_pull = true
check_uncommitted = true
[filter]
include = ["*"]
exclude = ["*.archive"]
exclude_archived = true
exclude_forks = false
[git]
ssh_auth = true
depth = 0 # 0 = full clone
[tui]
show_descriptions = true
compact_mode = falseSee architecture.md#configuration for full configuration options.
Roadmap
raibid-cli is under active development. See roadmap.md for the complete development roadmap.
Current Phase: Foundation (Phase 1)
- Project infrastructure
- Core library structure
- Basic CLI commands
- GitHub API integration
- Git operations
- Configuration system
Upcoming Phases
- Phase 2: Synchronization Engine - Robust repository sync with concurrency
- Phase 3: TUI Implementation - Interactive terminal user interface
- Phase 4: Advanced Features - Filtering, caching, statistics
- Phase 5: Integration - raibid-labs ecosystem integration
- Phase 6: Release - Production-ready v1.0.0
Documentation
User Documentation
- Architecture Overview - System design and components
- Development Roadmap - Feature timeline and milestones
Research Documentation
- git-sync Research - Analysis of existing git-sync implementations
- raibid-labs Organization - Organization structure and conventions
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
Development Setup
- Fork and clone the repository
- Install prerequisites (Rust, gh CLI, just)
- Run
just setup-devto install development tools - Make your changes
- Run
just cito ensure quality checks pass - Submit a pull request
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Acknowledgments
raibid-cli is inspired by:
- kubernetes/git-sync - Repository synchronization patterns
- raibid-ci - TUI design and architecture patterns
- The Rust ecosystem - Amazing libraries that make this possible
Contact
- GitHub Issues: raibid-labs/raibid-cli/issues
- Organization: raibid-labs
Made with ❤️ by the raibid-labs team