stratumiops/README.md

236 lines
8.2 KiB
Markdown
Raw Normal View History

2026-01-22 22:15:19 +00:00
<div align="center">
<img src="assets/logos/stratumiops-h.svg" alt="StratumIOps Logo" width="600" />
</div>
# StratumIOps
**Infrastructure operations, AI agent orchestration, knowledge management, secrets management, and configuration generation.**
Five integrated Rust projects. One ecosystem. Zero compromises.
---
## The 4 Problems It Solves
### 01 · Scattered Knowledge
Decisions in Slack, guidelines in wikis, patterns in docs—all disconnected. **Kogral** unifies knowledge with git-native markdown and MCP for AI agents.
### 02 · Uncontrolled LLM Costs
No visibility or limits on AI spending per team. **Vapora** provides real-time budgets, automatic fallback to cheaper
providers, and expertise-based agent routing.
### 03 · Fragile YAML Configuration
Runtime errors from untyped configuration. **Provisioning** uses Nickel with pre-runtime validation, **TypeDialog** generates forms with contract validation.
### 04 · Static Cryptography
No preparation for quantum threats. **SecretumVault** implements production post-quantum crypto (ML-KEM-768, ML-DSA-65) with pluggable backends today.
---
## Ecosystem Projects
| Project | Description | Metrics |
| ------- | ----------- | ------- |
| **[Vapora](https://repo.jesusperez.pro/jesus/vapora)** | AI agent orchestration with learning and cost control | 13 crates, 218 tests, 50K LOC |
| **[Kogral](https://repo.jesusperez.pro/jesus/kogral)** | Knowledge graph with MCP for Claude Code | 3 crates, 56 tests, 15K LOC |
| **[TypeDialog](https://repo.jesusperez.pro/jesus/typedialog)** | Multi-backend forms (CLI, TUI, Web, AI, Agent, Prov-gen) | 8 crates, 3,818 tests, 90K LOC |
| **[Provisioning](https://repo.jesusperez.pro/jesus/provisioning)** | Declarative IaC with Nickel + AI-assisted generation | 15+ crates, 218 tests, 40K LOC |
| **[SecretumVault](https://repo.jesusperez.pro/jesus/secretumvault)** | Secrets management with post-quantum cryptography | 1 crate, 50+ tests, 11K LOC |
### Vapora · AI Agent Orchestration
AI agent orchestration with learning and cost control. Agents improve from experience, automatic budget fallback, NATS JetStream coordination.
- AI agent orchestration with learning
- Agents improve from experience
- Automatic budget fallback
- NATS JetStream coordination
- 13 crates, 218 tests, 50K LOC
### Kogral · Knowledge Graph
Knowledge graph with MCP for Claude Code. 6 node types (Notes, ADRs, Guidelines, Patterns, Journals, Executions). Git-native markdown with semantic search.
- Knowledge graph with MCP for Claude Code
- 6 node types: Notes, ADRs, Guidelines, Patterns, Journals, Executions
- Git-native markdown storage
- Semantic search with embeddings
- 3 crates, 56 tests, 15K LOC
### TypeDialog · Multi-Backend Forms
Multi-backend forms (CLI, TUI, Web, AI, Agent, Prov-gen). One TOML definition, 6 interfaces. Nickel contract validation.
- 6 backends: CLI, TUI, Web, AI, Agent, Prov-gen
- One TOML definition for all interfaces
- Nickel contract validation
- Conditional fields & repeating groups
- 8 crates, 3,818 tests, 90K LOC
### Provisioning · Declarative IaC
Declarative IaC with Nickel + AI-assisted generation. Multi-cloud (AWS, UpCloud, Local), RAG with 1,200+ docs, MCP server, orchestrator with rollback.
- Declarative IaC with Nickel + AI-assisted generation
- Multi-cloud: AWS, UpCloud, Local (LXD)
- RAG with 1,200+ domain docs
- MCP server for natural language queries
- Orchestrator with automatic rollback
- 15+ crates, 218 tests, 40K LOC
### SecretumVault · Secrets Management
Secrets management with post-quantum crypto. ML-KEM-768, ML-DSA-65 (NIST FIPS 203/204). 4 crypto backends, 4 storage backends, 4 secrets engines.
- Post-quantum crypto: ML-KEM-768, ML-DSA-65 (NIST FIPS 203/204)
- 4 crypto backends: OpenSSL, OQS, AWS-LC, RustCrypto
- 4 storage backends: Filesystem, etcd, SurrealDB, PostgreSQL
- 4 secrets engines: KV, Transit, PKI, Database
- Shamir Secret Sharing for unsealing
- 1 crate, 50+ tests, 11K LOC
---
## Technology Stack
- **Languages**: Rust Edition 2021, Nickel, Nushell, Bash, Markdown
- **Databases**: SurrealDB (multi-tenant), etcd (HA), PostgreSQL (enterprise)
- **Messaging**: NATS JetStream (durable, ordered)
- **Frameworks**: Axum (REST), Leptos (WASM), Ratatui (TUI)
- **Crypto**: OpenSSL, OQS (Post-Quantum), AWS-LC, RustCrypto
- **Observability**: Prometheus, OpenTelemetry, Grafana
---
## Ecosystem Metrics
| Metric | Value |
| ------ | ----- |
| **Total Rust crates** | 40+ |
| **Total tests** | 4,360+ |
| **Total LOC** | ~206K |
| **Clippy warnings** | 0 |
| **Unsafe code blocks** | 0 |
| **Public API doc coverage** | 100% |
| **Crypto backends** | 4 (OpenSSL, OQS, AWS-LC, RustCrypto) |
| **Storage backends** | 4 (Filesystem, etcd, SurrealDB, PostgreSQL) |
| **TypeDialog backends** | 6 (CLI, TUI, Web, AI, Agent, Prov-gen) |
| **MCP Tools** | 14+ |
| **Multi-Cloud Support** | AWS, UpCloud, Local (LXD) |
| **Post-Quantum Ready** | Yes (ML-KEM-768, ML-DSA-65) |
---
## What is StratumIOps
StratumIOps is not a single project. It's the **orchestration layer** that coordinates:
- **Documentation**: Unified docs for all ecosystem projects (bilingual en/es)
- **Branding Assets**: Logos, color schemes, web landing pages
- **Integration Patterns**: How projects work together
- **Shared Standards**: Language guidelines (Rust, Nickel, Nushell, Bash)
### Documentation Structure
```text
docs/
├── en/ # English documentation
│ ├── ia/ # AI/Development track
│ └── ops/ # Ops/DevOps track
└── es/ # Spanish documentation
├── ia/ # AI/Development track
└── ops/ # Ops/DevOps track
```
### Branding Assets
Complete branding system with 18+ assets:
- **8 Logo variants**: Horizontal, vertical, animated, static, dark mode
- **4 Icon variants**: Animated, static, dark mode
- **4 Monochrome variants**: Black/white for print and accessibility
- **2 Social variants**: Optimized for social platforms (1080×1080)
- **2 Favicon variants**: Browser tabs (16×16, 32×32)
See [assets/branding/README.md](assets/branding/README.md) for detailed guidelines.
---
## Integration Patterns
### Example: Kogral → Vapora
```rust
// Vapora agent queries Kogral for guidelines before generating code
async fn get_project_context(task: &Task) -> Result<ProjectContext> {
let kogral = KogralMcpClient::connect().await?;
let guidelines = kogral.call("get_guidelines", json!({
"topic": &task.task_type,
"include_shared": true,
})).await?;
Ok(ProjectContext { guidelines })
}
```
### Example: TypeDialog → Provisioning
```rust
// TypeDialog prov-gen backend generates Nickel for Provisioning
async fn generate_infrastructure(form_response: &FormResponse) -> Result<WorkflowId> {
let generator = ProvGenBackend::new();
let iac = generator.generate(&form_response.into()).await?;
let provisioning = ProvisioningClient::connect().await?;
let workflow_id = provisioning.submit_workflow(iac).await?;
Ok(workflow_id)
}
```
---
## Related Projects
| Project | Local Path | Git Repo |
| ------- | ---------- | -------- |
| vapora | `/Users/Akasha/Development/vapora` | `https://repo.jesusperez.pro/jesus/vapora` |
| kogra | `/Users/Akasha/Development/kogral` | `https://repo.jesusperez.pro/jesus/kogra` |
| typedialog | `/Users/Akasha/Development/typedialog` | `https://repo.jesusperez.pro/jesus/typedialog` |
| provisioning | `/Users/Akasha/project-provisioning/provisioning` | `https://repo.jesusperez.pro/jesus/provisioning` |
| secretumvault | `/Users/Akasha/Development/secretumvault` | `https://repo.jesusperez.pro/jesus/secretumvault` |
---
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines, code standards, and pull request process.
## Security
See [SECURITY.md](SECURITY.md) for security policy, vulnerability reporting, and security best practices.
## Code of Conduct
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for community guidelines and expected behavior.
## License
Proprietary / To be defined
---
<div align="center">
**StratumIOps v0.1.0**
*Integrated ecosystem with Rust excellence ✨*
Infrastructure Operations | AI Orchestration | Knowledge Management | Secrets & Configuration
**100% Rust. Zero compromises.**
</div>