{"id":44385272,"url":"https://github.com/cyberfabric/cyberfabric-core","last_synced_at":"2026-05-07T00:03:03.559Z","repository":{"id":313454072,"uuid":"1034088966","full_name":"cyberfabric/cyberfabric-core","owner":"cyberfabric","description":"All-in-one open-source platform for enterprise-grade multi-tenant and multi-tier SaaS Services development","archived":false,"fork":false,"pushed_at":"2026-05-04T14:27:49.000Z","size":26405,"stargazers_count":67,"open_issues_count":466,"forks_count":60,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-04T16:24:41.440Z","etag":null,"topics":["agentic-ai","ai","benchmarks","cloud","llm","microservices","multi-tenancy","multi-tier","rust","saas","security","serverless"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cyberfabric.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":"MAINTAINERS.md","copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-07T20:30:28.000Z","updated_at":"2026-05-04T11:38:11.000Z","dependencies_parsed_at":"2025-09-06T07:18:00.056Z","dependency_job_id":"663e311d-cd21-4011-a158-dbc1db398ddf","html_url":"https://github.com/cyberfabric/cyberfabric-core","commit_stats":null,"previous_names":["hypernetix/hyperspot","cyberfabric/cyberfabric-core"],"tags_count":1053,"template":false,"template_full_name":null,"purl":"pkg:github/cyberfabric/cyberfabric-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberfabric%2Fcyberfabric-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberfabric%2Fcyberfabric-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberfabric%2Fcyberfabric-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberfabric%2Fcyberfabric-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyberfabric","download_url":"https://codeload.github.com/cyberfabric/cyberfabric-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberfabric%2Fcyberfabric-core/sbom","scorecard":{"id":1242513,"data":{"date":"2026-01-26T21:42:39Z","repo":{"name":"github.com/hypernetix/hyperspot","commit":"4fd0e27df4cf6c0f45ff0bc5e2225360f95885b0"},"scorecard":{"version":"v5.1.1","commit":"cd152cb6742c5b8f2f3d2b5193b41d9c50905198"},"score":6.4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-plz.yml:31","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-plz.yml:66","Info: topLevel 'contents' permission set to 'read': .github/workflows/adr-lint.yml:18","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:21","Warn: no topLevel permission defined: .github/workflows/release-plz.yml:1","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#cii-best-practices"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/adr-lint.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/hypernetix/hyperspot/adr-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/adr-lint.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/hypernetix/hyperspot/adr-lint.yml/main?enable=pin","Warn: containerImage not pinned by hash: testing/docker/http-mock.Dockerfile:1: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:5be45dbade29bebd6886af6b438fd7e0b4eb7b611f39ba62b430263f82de36d2","Warn: containerImage not pinned by hash: testing/docker/hyperspot.Dockerfile:3","Warn: containerImage not pinned by hash: testing/docker/hyperspot.Dockerfile:37: pin your Docker image by updating debian:bookworm-slim to debian:bookworm-slim@sha256:56ff6d36d4eb3db13a741b342ec466f121480b5edded42e4b7ee850ce7a418ee","Info:  17 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:  40 out of  41 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#fuzzing"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: :0"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dependency-update-tool"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#license"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 2 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#sast"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2023-0089","Warn: Project is vulnerable to: RUSTSEC-2023-0071","Warn: Project is vulnerable to: RUSTSEC-2025-0134","Warn: Project is vulnerable to: RUSTSEC-2024-0436","Warn: Project is vulnerable to: PYSEC-2022-183 / GHSA-h8pj-cxx2-jfg2"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#security-policy"}},{"name":"CI-Tests","score":10,"reason":"16 out of 16 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#ci-tests"}},{"name":"Contributors","score":10,"reason":"project has 3 contributing companies or organizations -- score normalized to 10","details":["Info: found contributions from: FrozenBear, acronis, reflek.io"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#contributors"}}]},"last_synced_at":"2026-01-27T09:19:43.606Z","repository_id":313454072,"created_at":"2026-01-27T09:19:43.607Z","updated_at":"2026-01-27T09:19:43.607Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32715445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agentic-ai","ai","benchmarks","cloud","llm","microservices","multi-tenancy","multi-tier","rust","saas","security","serverless"],"created_at":"2026-02-12T00:40:04.364Z","updated_at":"2026-05-07T00:03:03.543Z","avatar_url":"https://github.com/cyberfabric.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cyber Fabric\n![Badge](./.github/badgeHN.svg)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/cyberfabric/cyberfabric-core/badge)](https://scorecard.dev/viewer/?uri=github.com/cyberfabric/cyberfabric-core)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12050/badge)](https://www.bestpractices.dev/projects/12050)\n\n**Cyber Fabric** is a secure, modular XaaS development framework and middleware written primarily in Rust. It provides ready-to-use building blocks, domain model elements, and APIs with security-in-depth enforcement, multi-tenancy, and granular access control built into every layer.\n\nCyberFabric is not a ready-to-use service — it is a set of well-integrated libraries (modules) that XaaS vendors compose into their own products. Vendors decide which modules to include, how to combine them into services, and on what infrastructure to run — from edge devices to Kubernetes clusters.\n\n**Five defining characteristics:**\n\n1. **Secure XaaS framework with defense-in-depth** — Every API handler enforces authentication, authorization, tenant isolation, and scoped DB access by default. Security is structural, not opt-in, validated at build time using integrated dynamic lints.\n\n2. **Three-tier module hierarchy** — *Modkit* (`libs/` — ModKit, DB access, error model, API middleware), *System modules* (`modules/system/` — API gateway, authn/authz, tenancy, resource groups, type registry), and *Service modules* (`modules/` — serverless runtime, GenAI subsystems, event system, and domain modules).\n\n3. **Composable libraries, vendor-controlled deployment** — Each module owns its API surface and database, communicates via a Rust-native SDK that facades local vs. remote calls, and is fully infrastructure-agnostic. Vendors choose which modules to bundle and whether to deploy single-process (edge/on-prem), multi-node (bare metal), or on Kubernetes.\n\n4. **Pre-integrated XaaS backbone** — Deep integration with multi-tenancy, licensing and quota management, usage collection, and event systems. CyberFabric provides its own backbone modules, but each can be replaced or integrated with existing vendor infrastructure via plugins (e.g. subscription management, product catalog, provisioning, or license enforcement).\n\n5. **Extensible domain model via Global Type System** — Modules expose extensible domain objects whose metadata and types are customizable through [GTS](https://github.com/globaltypesystem/gts-spec) — define new event types, user settings, LLM model attributes, etc. CRUD API handlers support customization via hooks and callbacks as serverless functions and workflows.\n\n**Engineering principles:**\n- **Spec-Driven Development**: [Specification templates](docs/spec-templates/README.md) (PRD, Design, ADR, Feature) define what gets built *before* code is written. Every module is well documented.\n- **Shift Left**: Custom [dylint](tools/dylint_lints/) architectural lints enforce design rules at compile time, alongside Clippy, [tests](#testing), fuzzing, and security audits in CI\n- **Quality First**: 90%+ test coverage target with unit, integration, E2E, performance, and security testing\n- **Core in Rust**: Compile-time safety, deep static analysis including project-specific lints, so more issues are prevented before review/runtime\n- **Monorepo**: Core modules and contracts in one place for atomic refactors, consistent tooling/CI, and realistic local build + E2E testing\n\nSee the full architecture [MANIFEST](docs/ARCHITECTURE_MANIFEST.md) for more details, including rationales behind Rust and Monorepo choice.\n\nSee also [REPO_PLAYBOOK](docs/REPO_PLAYBOOK.md) with the registry of repository-wide artifacts (guidelines, rules, conventions, etc).\n\n## Quick Start\n\n### Prerequisites\n\n- Rust stable with Cargo ([Install via rustup](https://rustup.rs/))\n- Protocol Buffers compiler (`protoc`):\n  - macOS: `brew install protobuf`\n  - Linux: `apt-get install protobuf-compiler`\n  - Windows: Download from https://github.com/protocolbuffers/protobuf/releases\n- MariaDB/PostgreSQL/SQLite or in-memory database\n\n### CI/Development Commands\n\n```bash\n# Clone the repository\ngit clone --recurse-submodules \u003crepository-url\u003e\ncd cyberfabric-core\n\nmake ci         # Run full CI pipeline\nmake fmt        # Check formatting (no changes). Use 'make dev-fmt' to auto-format\nmake clippy     # Lint (deny warnings). Use 'make dev-clippy' to attempt auto-fix\nmake test       # Run tests\nmake example    # Run modkit example module\nmake check      # Full check suite\nmake safety     # Extended safety checks (includes dylint/kani)\nmake deny       # License and dependency checks\n```\n\n### Running the Server\n\n```bash\n# Quick helper\nmake quickstart\n\n# Option 1: Run with SQLite database (recommended for development)\ncargo run --bin cf-server -- --config config/quickstart.yaml run\n\n# Option 2: Run without database (no-db mode)\ncargo run --bin cf-server -- --config config/no-db.yaml run\n\n# Option 3: Run with mock in-memory database for testing\ncargo run --bin cf-server -- --config config/quickstart.yaml --mock run\n\n# Check if server is ready (detailed JSON response)\ncurl http://127.0.0.1:8087/health\n\n# Kubernetes-style liveness probe (simple \"ok\" response)\ncurl http://127.0.0.1:8087/healthz\n\n# See API documentation:\n# $ make quickstart\n# visit: http://127.0.0.1:8087/docs\n```\n\n### Example Configuration (config/quickstart.yaml)\n\n```yaml\n# Cyber Fabric Configuration\n\n# Core server configuration (global section)\nserver:\n  home_dir: \"~/.cyberfabric\"\n\n# Database configuration (global section)\ndatabase:\n  url: \"sqlite://database/database.db\"\n  max_conns: 10\n  busy_timeout_ms: 5000\n\n# Logging configuration (global section)\nlogging:\n  default:\n    console_level: info\n    file: \"logs/cyberfabric.log\"\n    file_level: warn\n    max_age_days: 28\n    max_backups: 3\n    max_size_mb: 1000\n\n# Per-module configurations moved under modules section\nmodules:\n  api_gateway:\n    bind_addr: \"127.0.0.1:8087\"\n    enable_docs: true\n    cors_enabled: false\n```\n\n### Creating Your First Module\n\nSee [MODKIT UNIFIED SYSTEM](docs/modkit_unified_system/README.md) and [MODKIT_PLUGINS.md](docs/MODKIT_PLUGINS.md) for details.\n\n## Documentation\n\n- **[Architecture manifest](docs/ARCHITECTURE_MANIFEST.md)** - High-level overview of the architecture\n- **[Modules](docs/MODULES.md)** - List of all modules and their roles\n- **[MODKIT UNIFIED SYSTEM](docs/modkit_unified_system/README.md) and [MODKIT_PLUGINS.md](docs/MODKIT_PLUGINS.md)** - how to add new modules.\n- **[Contributing](CONTRIBUTING.md)** - Development workflow and coding standards\n\n## Security\n\nCyber Fabric applies defense-in-depth security across the entire development lifecycle — from Rust's compile-time safety guarantees and custom architectural lints, through compile-time tenant isolation and PDP/PEP authorization enforcement, to continuous fuzzing, dependency auditing, and automated security scanning in CI.\n\nSee **[Security Overview](docs/security/SECURITY.md)** for the full breakdown, including: Secure ORM with compile-time tenant scoping, authentication/authorization architecture (NIST SP 800-162 PDP/PEP model), 90+ Clippy deny-level rules, custom dylint architectural lints, cargo-deny advisory checks, ClusterFuzzLite continuous fuzzing, CodeQL/Scorecard/Snyk/Aikido scanners, and AI-powered PR review bots.\n\n## Specification Templates\n\nCyber Fabric uses industry-standard specification templates (IEEE, ISO, MADR) to drive development. Specs are written *before* implementation and live alongside the code in version control.\n\n- **[Overview \u0026 Guide](docs/spec-templates/README.md)** — Template system overview, governance, FDD ID conventions, and document placement rules\n- **[PRD.md](docs/spec-templates/PRD.md)** — Product Requirements Document: vision, actors, capabilities, use cases, FR/NFR\n- **[DESIGN.md](docs/spec-templates/DESIGN.md)** — Technical Design: architecture, principles, constraints, domain model, API contracts\n- **[ADR.md](docs/spec-templates/ADR.md)** — Architecture Decision Record: decisions, options, trade-offs, consequences\n- **[FEATURE.md](docs/spec-templates/FEATURE.md)** — Feature Specification: flows, algorithms, states, requirements\n- **[UPSTREAM_REQS.md](docs/spec-templates/UPSTREAM_REQS.md)** — Upstream Requirements: technical requirements from other modules to this module\n\n## Configuration\n\n### YAML Configuration Structure\n\n```yaml\n# config/server.yaml\n\n# Global server configuration\nserver:\n  home_dir: \"~/.cyberfabric\"\n\n# Database configuration\ndatabase:\n  servers:\n    sqlite_users:\n      params:\n        WAL: \"true\"\n        synchronous: \"NORMAL\"\n        busy_timeout: \"5000\"\n      pool:\n        max_conns: 5\n        acquire_timeout: \"30s\"\n\n# Logging configuration\nlogging:\n  default:\n    console_level: info\n    file: \"logs/cyberfabric.log\"\n    file_level: warn\n    max_age_days: 28\n    max_backups: 3\n    max_size_mb: 1000\n\n# Per-module configuration\nmodules:\n  api_gateway:\n    config:\n      bind_addr: \"127.0.0.1:8087\"\n      enable_docs: true\n      cors_enabled: true\n  users_info:\n    database:\n      server: \"sqlite_users\"\n      file: \"users_info.db\"\n    config:\n      default_page_size: 5\n      max_page_size: 100\n```\n\n### Environment Variable Overrides\n\nConfiguration supports environment variable overrides with `CYBERFABRIC_` prefix:\n\n```bash\nexport CYBERFABRIC_DATABASE_URL=\"postgres://user:pass@localhost/db\"\nexport CYBERFABRIC_MODULES_api_gateway_BIND_ADDR=\"0.0.0.0:8080\"\nexport CYBERFABRIC_LOGGING_DEFAULT_CONSOLE_LEVEL=\"debug\"\n```\n\n## Testing\n\n```bash\nmake check           # full quality gate (fmt + clippy + test + security)\n```\n\nOther tests:\n\n```bash\nmake test            # unit tests (workspace)\nmake test-sqlite     # integration tests (SQLite, no external DB required)\nmake e2e-local       # end-to-end tests (builds + starts server automatically)\nmake e2e-docker      # end-to-end tests (builds + starts server in Docker)\nmake coverage-unit   # unit test code coverage\nmake fuzz            # fuzz smoke tests (30 s per target)\n```\n\nOn **Windows** (no `make`), use the cross-platform CI script directly:\n\n```bash\npython tools/scripts/ci.py check          # full CI suite\npython tools/scripts/ci.py e2e-local      # end-to-end tests\npython tools/scripts/ci.py fuzz --seconds 60  # fuzz smoke run\n```\n\nFor the complete test strategy, coverage policy, CI pipeline details, and all\navailable commands see **[docs/TESTING.md](docs/TESTING.md)**.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberfabric%2Fcyberfabric-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyberfabric%2Fcyberfabric-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberfabric%2Fcyberfabric-core/lists"}