{"id":31908231,"url":"https://github.com/example42/sai-suite","last_synced_at":"2025-10-13T15:25:14.633Z","repository":{"id":318066971,"uuid":"1050088236","full_name":"example42/sai-suite","owner":"example42","description":"SAI Software Management Suite","archived":false,"fork":false,"pushed_at":"2025-10-05T11:24:29.000Z","size":1686,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T12:27:50.937Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/example42.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T23:50:19.000Z","updated_at":"2025-10-05T11:24:32.000Z","dependencies_parsed_at":"2025-10-05T12:38:42.763Z","dependency_job_id":null,"html_url":"https://github.com/example42/sai-suite","commit_stats":null,"previous_names":["example42/sai_python","example42/sai-suite"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/example42/sai-suite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/example42%2Fsai-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/example42%2Fsai-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/example42%2Fsai-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/example42%2Fsai-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/example42","download_url":"https://codeload.github.com/example42/sai-suite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/example42%2Fsai-suite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015920,"owners_count":26085778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-13T15:25:13.404Z","updated_at":"2025-10-13T15:25:14.623Z","avatar_url":"https://github.com/example42.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAI Software Management Suite\n\n\u003e A comprehensive monorepo containing two complementary Python tools for software management and metadata generation.\n\n**Repository:** [github.com/example42/sai-suite](https://github.com/example42/sai-suite)  \n**Website:** [sai.software](https://sai.software)  \n**Saidata Repository:** [github.com/example42/saidata](https://github.com/example42/saidata)\n\n---\n\n## 📑 Table of Contents\n\n- [Two Packages, One Repository](#two-packages-one-repository)\n- [Quick Start](#quick-start)\n- [Documentation Hub](#documentation-hub)\n- [Quick Examples](#quick-examples)\n- [Configuration](#configuration)\n- [Commands Overview](#commands-overview)\n- [Supported Package Managers](#supported-package-managers)\n- [Repository Structure](#repository-structure)\n- [Development](#development)\n- [Use Cases](#use-cases)\n- [Troubleshooting \u0026 Support](#troubleshooting--support)\n- [License](#license)\n\n---\n\n## 📦 Two Packages, One Repository\n\nThis repository provides **separate pip packages** that can be installed independently or together:\n\n### 🔧 SAI - Software Action Interface\n\n**Lightweight CLI for executing software management actions**\n\n```bash\npip install sai\n```\n\n**Key Features:**\n- Provider-based action execution (install, configure, start, stop, etc.)\n- Multi-platform support (Linux, macOS, Windows)\n- Minimal dependencies for production use\n- Dry-run mode for safe testing\n- Works with existing saidata from the [saidata repository](https://github.com/example42/saidata)\n\n**Use SAI when you need to:**\n- Deploy software using existing saidata\n- Execute software management in production\n- Run automated deployments in CI/CD pipelines\n\n### 🤖 SAIGEN - SAI Data Generation\n\n**AI-powered tool for generating and managing software metadata**\n\n```bash\npip install saigen\n```\n\n**Key Features:**\n- Generate saidata files for 50+ package managers (apt, dnf, brew, winget, npm, pypi, cargo, etc.)\n- AI-enhanced generation with LLM support (OpenAI, Anthropic, Ollama)\n- Schema validation and quality assessment\n- Batch processing capabilities\n- RAG (Retrieval-Augmented Generation) support\n- Comprehensive repository management\n\n**Use SAIGEN when you need to:**\n- Create new saidata files\n- Validate and test metadata\n- Contribute to the saidata repository\n- Build software catalogs\n\n## 🚀 Quick Start\n\n### Choose Your Installation\n\n\u003e **Note:** PyPI packages are coming soon. For now, use the development installation below.\n\n```bash\n# Clone the repository\ngit clone https://github.com/example42/sai-suite.git\ncd sai-suite\n\n# Create and activate virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n\n# Install both packages in editable mode\nmake install-both\n# Or: ./scripts/install-local.sh both\n\n# Verify installation\nsai --version\nsaigen --version\n```\n\n**Future PyPI Installation (coming soon):**\n```bash\n# Install SAI only (lightweight, for execution)\npip install sai\n\n# Install SAIGEN only (for metadata generation)\npip install saigen\n\n# Install SAI with generation support\npip install sai[generation]\n\n# Install SAIGEN with all features (LLM + RAG)\npip install saigen[all]\n```\n\n**Not sure which to install?** See [When to Use What](docs/when-to-use-what.md)\n\n### Quick Command Examples\n\n**SAI (Execution):**\n```bash\n# Install software\nsai install nginx\n\n# Execute multiple actions\nsai apply infrastructure.yaml\n\n# View available providers\nsai providers list\n```\n\n**SAIGEN (Generation):**\n```bash\n# Generate saidata\nsaigen generate nginx --providers apt brew\n\n# Search across 50+ repositories\nsaigen repositories search redis\n\n# Validate saidata\nsaigen validate nginx.yaml\n\n# Test saidata\nsaigen test-system nginx.yaml\n```\n\n## 📖 Documentation Hub\n\n### 🚀 Getting Started\n- **[Quick Start Guide](QUICK-START.md)** - Get up and running in 5 minutes\n- **[When to Use What](docs/when-to-use-what.md)** - Choose the right tool for your needs\n- **[Installation Guide](docs/installation.md)** - Detailed installation instructions for all scenarios\n\n### 📚 Core Documentation\n- **[Documentation Index](docs/README.md)** - Complete documentation overview\n- **[Monorepo Structure](MONOREPO.md)** - Understanding the repository architecture\n- **[Architecture Diagram](docs/architecture-diagram.md)** - Visual guide to the system\n- **[Migration Guide](docs/MIGRATION.md)** - Upgrading from previous versions\n\n### 🔧 SAI Documentation\n- **[SAI README](sai/README.md)** - SAI package overview\n- **[SAI CLI Reference](sai/docs/cli-reference.md)** - Complete command reference\n- **[SAI Apply Command](sai/docs/sai-apply-command.md)** - Batch action execution\n- **[Template Engine](sai/docs/template-engine.md)** - Configuration templating\n- **[SAI Examples](sai/docs/examples/)** - Usage examples and patterns\n\n### 🤖 SAIGEN Documentation\n- **[SAIGEN README](saigen/README.md)** - SAIGEN package overview\n- **[SAIGEN CLI Reference](saigen/docs/cli-reference.md)** - Complete command reference\n- **[Generation Engine](saigen/docs/generation-engine.md)** - How generation works\n- **[Repository Management](saigen/docs/repository-management.md)** - Working with 50+ repositories\n- **[Configuration Guide](saigen/docs/configuration-guide.md)** - Advanced configuration\n- **[Testing Guide](saigen/docs/testing-guide.md)** - Testing saidata files\n- **[RAG Indexing Guide](saigen/docs/rag-indexing-guide.md)** - AI-enhanced generation\n- **[SAIGEN Examples](saigen/docs/examples/)** - Generation examples and patterns\n\n### 🛠️ Development \u0026 Contributing\n- **[Tests Organization](tests/README.md)** - Test suite structure and guidelines\n- **[Development Scripts](scripts/development/)** - Demo and development tools\n- **[Documentation Quick Reference](DOCS-QUICK-REFERENCE.md)** - Find docs fast\n\n## 🛠️ Development\n\n### Quick Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/example42/sai-suite.git\ncd sai-suite\n\n# Create and activate virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n\n# Install both packages in editable mode\nmake install-both\n# Or: ./scripts/install-local.sh both\n\n# Verify installation\nsai --version\nsaigen --version\n```\n\n### Common Development Tasks\n\n```bash\n# Run tests\nmake test                    # All tests\nmake test-sai                # SAI tests only\nmake test-saigen             # SAIGEN tests only\n\n# Code quality\nmake format                  # Format code\nmake lint                    # Run linters\n\n# Build and publish\nmake build                   # Build both packages\nmake publish-test            # Publish to TestPyPI\nmake publish-prod            # Publish to PyPI\n\n# Utilities\nmake clean                   # Clean build artifacts\nmake help                    # See all commands\n```\n\n**See [MONOREPO.md](MONOREPO.md) for complete development guide.**\n\n\n\n## Supported Package Managers\n\nSAIGEN now supports 50+ package managers across all major platforms:\n\n### Linux Package Managers\n- **Debian/Ubuntu**: apt\n- **Red Hat/Fedora**: dnf, yum\n- **SUSE**: zypper\n- **Arch Linux**: pacman\n- **Alpine**: apk\n- **Gentoo**: emerge, portage\n- **Void Linux**: xbps\n- **Universal**: flatpak, snap\n\n### macOS Package Managers\n- **Homebrew**: brew (formulae and casks)\n- **MacPorts**: macports\n- **Nix**: nix, nixpkgs\n\n### Windows Package Managers\n- **Microsoft**: winget\n- **Community**: chocolatey, scoop\n\n### Language Ecosystems\n- **JavaScript**: npm, yarn, pnpm\n- **Python**: pypi, conda\n- **Rust**: cargo (crates.io)\n- **Ruby**: gem (rubygems)\n- **Go**: go modules\n- **PHP**: composer (packagist)\n- **Java**: maven, gradle\n- **C#/.NET**: nuget\n\n### Container \u0026 Cloud\n- **Containers**: docker hub\n- **Kubernetes**: helm charts\n- **Scientific**: spack, conda-forge\n\n## 💡 Key Features at a Glance\n\n### SAI Features\n✅ Execute software actions across platforms  \n✅ Multi-provider support (apt, brew, winget, etc.)  \n✅ Batch action execution with `sai apply`  \n✅ Dry-run mode for safe testing  \n✅ Provider auto-detection and caching  \n✅ Comprehensive history and metrics  \n✅ Shell completion support  \n\n### SAIGEN Features\n✅ Generate saidata for 50+ package managers  \n✅ AI-powered metadata generation (OpenAI, Anthropic, Ollama)  \n✅ Search across all repositories simultaneously  \n✅ Schema validation and quality assessment  \n✅ Batch processing with concurrent operations  \n✅ RAG (Retrieval-Augmented Generation) support  \n✅ Comprehensive testing framework for saidata  \n✅ Repository cache management  \n\n## 🎯 Quick Examples\n\n### SAI: Execute Software Actions\n\n```bash\n# Install software using available providers\nsai install nginx\n\n# Execute multiple actions from a file\nsai apply infrastructure.yaml --parallel\n\n# View available providers and statistics\nsai providers list\nsai stats --detailed\n\n# Dry run to preview actions\nsai install postgresql --dry-run\n```\n\n### SAIGEN: Generate \u0026 Validate Metadata\n\n```bash\n# Generate saidata with AI assistance\nsaigen generate nginx --providers apt brew\n\n# Search across 50+ repositories\nsaigen repositories search redis --platform linux\n\n# Validate and test saidata\nsaigen validate nginx.yaml\nsaigen test-system nginx.yaml\n\n# Batch generate multiple packages\nsaigen batch --software-list \"nginx,redis,postgresql\"\n```\n\n## ⚙️ Configuration\n\n### SAI Configuration\n\nSAI looks for configuration files in:\n- `~/.sai/config.yaml` or `~/.sai/config.json`\n- `.sai.yaml` or `.sai.json` (in current directory)\n- `sai.yaml` or `sai.json` (in current directory)\n\nExample SAI configuration:\n```yaml\nconfig_version: \"0.1.0\"\nlog_level: info\n\n# Saidata search paths (repository cache has highest priority)\nsaidata_paths:\n  - \"~/.sai/cache/repositories/saidata-main\"\n  - \"~/.sai/saidata\"\n  - \"/usr/local/share/sai/saidata\"\n\nprovider_paths:\n  - \"providers\"\n  - \"~/.sai/providers\"\n  - \"/usr/local/share/sai/providers\"\n\n# Provider priorities (lower number = higher priority)\nprovider_priorities:\n  apt: 1\n  brew: 2\n  winget: 3\n\n# Execution settings\nmax_concurrent_actions: 3\naction_timeout: 300\nrequire_confirmation: true\ndry_run_default: false\n```\n\n### SAIGEN Configuration\n\nSAIGEN looks for configuration files in:\n- `~/.saigen/config.yaml` or `~/.saigen/config.json`\n- `.saigen.yaml` or `.saigen.json` (in current directory)\n- `saigen.yaml` or `saigen.json` (in current directory)\n\nConfiguration can also be set via environment variables:\n- `OPENAI_API_KEY` - OpenAI API key\n- `ANTHROPIC_API_KEY` - Anthropic API key\n- `SAIGEN_LOG_LEVEL` - Logging level (debug, info, warning, error)\n- `SAIGEN_CACHE_DIR` - Cache directory path\n- `SAIGEN_OUTPUT_DIR` - Output directory path\n\nExample SAIGEN configuration:\n```yaml\nconfig_version: \"0.1.0\"\nlog_level: info\n\nllm_providers:\n  openai:\n    provider: openai\n    model: gpt-4o-mini\n    max_tokens: 4000\n    temperature: 0.1\n    timeout: 30\n    max_retries: 3\n    enabled: true\n  anthropic:\n    provider: anthropic\n    model: claude-3-sonnet-20240229\n    enabled: false\n\nrepositories:\n  apt:\n    type: apt\n    enabled: true\n    cache_ttl: 3600\n    priority: 1\n\ncache:\n  directory: ~/.saigen/cache\n  max_size_mb: 1000\n  default_ttl: 3600\n\nrag:\n  enabled: true\n  index_directory: ~/.saigen/rag_index\n  embedding_model: sentence-transformers/all-MiniLM-L6-v2\n  max_context_items: 5\n\ngeneration:\n  default_providers: [apt, brew, winget]\n  output_directory: ./saidata\n  parallel_requests: 3\n  request_timeout: 120\n\nvalidation:\n  strict_mode: true\n  auto_fix_common_issues: true\n```\n\n## 📋 Commands Overview\n\n### SAI Commands\n\n**Software Management**\n```bash\nsai install \u003csoftware\u003e        # Install software\nsai uninstall \u003csoftware\u003e      # Uninstall software\nsai start|stop|restart \u003csw\u003e   # Service management\nsai status \u003csoftware\u003e         # Check status\nsai apply \u003cfile\u003e              # Batch actions\n```\n\n**Provider Management**\n```bash\nsai providers list            # List providers\nsai providers detect          # Detect available providers\nsai providers info \u003cname\u003e     # Provider details\n```\n\n**Configuration \u0026 Utilities**\n```bash\nsai config show               # Show configuration\nsai stats                     # Show statistics\nsai history list              # Execution history\nsai completion install        # Shell completion\n```\n\n**📖 Full command reference:** [SAI CLI Reference](sai/docs/cli-reference.md)\n\n### SAIGEN Commands\n\n**Generation \u0026 Validation**\n```bash\nsaigen generate \u003csoftware\u003e    # Generate saidata\nsaigen validate \u003cfile\u003e        # Validate saidata\nsaigen quality \u003cfile\u003e         # Quality assessment\nsaigen batch                  # Batch generation\nsaigen test-system \u003cfile\u003e     # Test saidata\n```\n\n**Repository Management**\n```bash\nsaigen repositories list-repos      # List all repositories\nsaigen repositories search \u003cquery\u003e  # Search packages\nsaigen repositories info \u003cpackage\u003e  # Package details\nsaigen repositories stats           # Repository statistics\nsaigen repositories update-cache    # Update caches\n```\n\n**Configuration**\n```bash\nsaigen config show            # Show configuration\nsaigen config set \u003ckey\u003e \u003cval\u003e # Set configuration\nsaigen config init            # Initialize config\n```\n\n**📖 Full command reference:** [SAIGEN CLI Reference](saigen/docs/cli-reference.md)\n\n## 🔍 Troubleshooting \u0026 Support\n\n- **Repository Issues:** [Repository Troubleshooting](saigen/docs/repository-troubleshooting.md)\n- **Bug Reports:** [Open an issue](https://github.com/example42/sai-suite/issues)\n- **Questions:** [GitHub Discussions](https://github.com/example42/sai-suite/discussions)\n- **Documentation:** See [Documentation Hub](#documentation-hub) above\n\n## 📁 Repository Structure\n\n```\nsai-suite/\n├── sai/                          # SAI package (lightweight execution)\n│   ├── pyproject.toml            # Package configuration\n│   ├── __init__.py               # Package root\n│   ├── cli/                      # CLI interface and commands\n│   ├── core/                     # Core execution engine\n│   ├── models/                   # Data models\n│   ├── providers/                # Provider implementations\n│   ├── utils/                    # Utilities\n│   └── docs/                     # SAI-specific documentation\n│       └── examples/             # SAI usage examples\n│   │   └── cli-reference.md      # Command reference\n│   └── pyproject.toml            # SAI package configuration\n│\n├── saigen/                       # SAIGEN package (generation tool)\n│   ├── saigen/                   # Source code\n│   │   ├── cli/                  # CLI interface and commands\n│   │   ├── core/                 # Generation engine\n│   │   ├── llm/                  # LLM provider integrations\n│   │   ├── models/               # Data models\n│   │   ├── repositories/         # 50+ repository integrations\n│   │   ├── testing/              # Testing framework\n│   │   └── utils/                # Utilities\n│   ├── docs/                     # SAIGEN-specific documentation\n│   │   ├── examples/             # Generation examples\n│   │   ├── cli-reference.md      # Command reference\n│   │   ├── repository-management.md\n│   │   └── testing-guide.md\n│   └── pyproject.toml            # SAIGEN package configuration\n│\n├── docs/                         # Shared documentation\n│   ├── summaries/                # Implementation summaries\n│   ├── archive/                  # Archived documentation\n│   ├── TODO/                     # Pending tasks\n│   ├── installation.md\n│   ├── when-to-use-what.md\n│   └── MIGRATION.md\n│\n├── tests/                        # Comprehensive test suite\n│   ├── sai/                      # SAI-specific tests\n│   ├── saigen/                   # SAIGEN-specific tests\n│   ├── shared/                   # Shared component tests\n│   └── integration/              # Integration tests\n│\n├── scripts/                      # Build and utility scripts\n│   └── development/              # Development scripts\n│       ├── sai/                  # SAI demo scripts\n│       └── saigen/               # SAIGEN demo scripts\n│\n├── examples/                     # Shared examples (CI/CD)\n├── schemas/                      # JSON schema definitions\n├── providers/                    # Provider data files\n├── pyproject.toml                # Workspace configuration\n├── README.md                     # This file\n├── QUICK-START.md                # Quick start guide\n├── MONOREPO.md                   # Monorepo architecture\n└── DOCS-QUICK-REFERENCE.md       # Documentation index\n```\n\n**See [MONOREPO.md](MONOREPO.md) for detailed architecture information.**\n\n## 🔄 How SAI and SAIGEN Work Together\n\n```\n┌─────────────┐         ┌──────────────┐         ┌─────────────┐\n│   SAIGEN    │ creates │   Saidata    │  used   │     SAI     │\n│ (Generator) │────────\u003e│    Files     │────────\u003e│ (Executor)  │\n└─────────────┘         └──────────────┘   by    └─────────────┘\n      │                                               │\n      │ AI + Repository Data                          │ Provider-based\n      │ Schema Validation                             │ Action Execution\n      │ Quality Assessment                            │ Multi-platform\n      └───────────────────────────────────────────────┘\n                    Independent but Complementary\n```\n\n- **SAI** consumes saidata files to execute software management actions\n- **SAIGEN** generates saidata files using AI and repository data\n- Both share common schemas and data formats but operate independently\n- SAI focuses on execution and action management\n- SAIGEN focuses on metadata generation and validation\n\n## 🛡️ Specialized Providers\n\nSAI includes specialized providers for security, debugging, and analysis:\n\n- **Network Security (nmap)**: Port scanning, service discovery, vulnerability detection\n- **SBOM Generation (syft)**: Package scanning, SBOM generation, format conversion\n- **Vulnerability Scanning (grype)**: Security scanning, CVE checking, report generation\n- **Debugging (gdb)**: Interactive debugging, process attachment, core dump analysis\n\n**📖 See:** [Specialized Providers Roadmap](sai/docs/specialized-providers-roadmap.md)\n\n## Use Cases\n\n### SAI Use Cases\n- Automated software deployment and configuration\n- Cross-platform software management\n- Infrastructure as Code implementations\n- CI/CD pipeline integrations\n- System administration automation\n\n### SAIGEN Use Cases\n- Generating metadata for new software packages\n- Updating existing saidata with latest information\n- Bulk metadata generation for software catalogs\n- AI-assisted software documentation\n- Repository data analysis and enrichment\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## 🔗 Quick Links\n\n| Resource | Link |\n|----------|------|\n| **Website** | [sai.software](https://sai.software) |\n| **Repository** | [github.com/example42/sai-suite](https://github.com/example42/sai-suite) |\n| **Saidata Repo** | [github.com/example42/saidata](https://github.com/example42/saidata) |\n| **Issues** | [Report a bug](https://github.com/example42/sai-suite/issues) |\n| **Discussions** | [Ask questions](https://github.com/example42/sai-suite/discussions) |\n| **SAI on PyPI** | [pypi.org/project/sai](https://pypi.org/project/sai/) |\n| **SAIGEN on PyPI** | [pypi.org/project/saigen](https://pypi.org/project/saigen/) |\n\n---\n\n**Made with ❤️ by the SAI team**\n\n*Star ⭐ this repository if you find it useful!*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexample42%2Fsai-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexample42%2Fsai-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexample42%2Fsai-suite/lists"}