kekkai-cli 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kekkai_cli-1.0.0/PKG-INFO +135 -0
- kekkai_cli-1.0.0/README.md +124 -0
- kekkai_cli-1.0.0/pyproject.toml +69 -0
- kekkai_cli-1.0.0/setup.cfg +4 -0
- kekkai_cli-1.0.0/src/kekkai/__init__.py +7 -0
- kekkai_cli-1.0.0/src/kekkai/cli.py +1038 -0
- kekkai_cli-1.0.0/src/kekkai/config.py +403 -0
- kekkai_cli-1.0.0/src/kekkai/dojo.py +419 -0
- kekkai_cli-1.0.0/src/kekkai/dojo_import.py +213 -0
- kekkai_cli-1.0.0/src/kekkai/github/__init__.py +16 -0
- kekkai_cli-1.0.0/src/kekkai/github/commenter.py +198 -0
- kekkai_cli-1.0.0/src/kekkai/github/models.py +56 -0
- kekkai_cli-1.0.0/src/kekkai/github/sanitizer.py +112 -0
- kekkai_cli-1.0.0/src/kekkai/installer/__init__.py +39 -0
- kekkai_cli-1.0.0/src/kekkai/installer/errors.py +23 -0
- kekkai_cli-1.0.0/src/kekkai/installer/extract.py +161 -0
- kekkai_cli-1.0.0/src/kekkai/installer/manager.py +252 -0
- kekkai_cli-1.0.0/src/kekkai/installer/manifest.py +189 -0
- kekkai_cli-1.0.0/src/kekkai/installer/verify.py +86 -0
- kekkai_cli-1.0.0/src/kekkai/manifest.py +77 -0
- kekkai_cli-1.0.0/src/kekkai/output.py +218 -0
- kekkai_cli-1.0.0/src/kekkai/paths.py +46 -0
- kekkai_cli-1.0.0/src/kekkai/policy.py +326 -0
- kekkai_cli-1.0.0/src/kekkai/runner.py +70 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/__init__.py +67 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/backends/__init__.py +14 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/backends/base.py +73 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/backends/docker.py +178 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/backends/native.py +240 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/base.py +110 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/container.py +144 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/falco.py +237 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/gitleaks.py +237 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/semgrep.py +227 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/trivy.py +246 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/url_policy.py +163 -0
- kekkai_cli-1.0.0/src/kekkai/scanners/zap.py +340 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/__init__.py +94 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/artifacts.py +476 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/chunking.py +361 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/core.py +438 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/mermaid.py +374 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/model_adapter.py +491 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/prompts.py +277 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/redaction.py +228 -0
- kekkai_cli-1.0.0/src/kekkai/threatflow/sanitizer.py +643 -0
- kekkai_cli-1.0.0/src/kekkai/triage/__init__.py +33 -0
- kekkai_cli-1.0.0/src/kekkai/triage/app.py +168 -0
- kekkai_cli-1.0.0/src/kekkai/triage/audit.py +203 -0
- kekkai_cli-1.0.0/src/kekkai/triage/ignore.py +269 -0
- kekkai_cli-1.0.0/src/kekkai/triage/models.py +185 -0
- kekkai_cli-1.0.0/src/kekkai/triage/screens.py +341 -0
- kekkai_cli-1.0.0/src/kekkai/triage/widgets.py +169 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/PKG-INFO +135 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/SOURCES.txt +148 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/dependency_links.txt +1 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/entry_points.txt +3 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/requires.txt +4 -0
- kekkai_cli-1.0.0/src/kekkai_cli.egg-info/top_level.txt +3 -0
- kekkai_cli-1.0.0/src/kekkai_core/__init__.py +3 -0
- kekkai_cli-1.0.0/src/kekkai_core/ci/__init__.py +11 -0
- kekkai_cli-1.0.0/src/kekkai_core/ci/benchmarks.py +354 -0
- kekkai_cli-1.0.0/src/kekkai_core/ci/metadata.py +104 -0
- kekkai_cli-1.0.0/src/kekkai_core/ci/validators.py +92 -0
- kekkai_cli-1.0.0/src/kekkai_core/docker/__init__.py +17 -0
- kekkai_cli-1.0.0/src/kekkai_core/docker/metadata.py +153 -0
- kekkai_cli-1.0.0/src/kekkai_core/docker/sbom.py +173 -0
- kekkai_cli-1.0.0/src/kekkai_core/docker/security.py +158 -0
- kekkai_cli-1.0.0/src/kekkai_core/docker/signing.py +135 -0
- kekkai_cli-1.0.0/src/kekkai_core/redaction.py +84 -0
- kekkai_cli-1.0.0/src/kekkai_core/slsa/__init__.py +13 -0
- kekkai_cli-1.0.0/src/kekkai_core/slsa/verify.py +121 -0
- kekkai_cli-1.0.0/src/kekkai_core/windows/__init__.py +29 -0
- kekkai_cli-1.0.0/src/kekkai_core/windows/chocolatey.py +335 -0
- kekkai_cli-1.0.0/src/kekkai_core/windows/installer.py +256 -0
- kekkai_cli-1.0.0/src/kekkai_core/windows/scoop.py +165 -0
- kekkai_cli-1.0.0/src/kekkai_core/windows/validators.py +220 -0
- kekkai_cli-1.0.0/src/portal/__init__.py +19 -0
- kekkai_cli-1.0.0/src/portal/api.py +155 -0
- kekkai_cli-1.0.0/src/portal/auth.py +103 -0
- kekkai_cli-1.0.0/src/portal/enterprise/__init__.py +32 -0
- kekkai_cli-1.0.0/src/portal/enterprise/audit.py +435 -0
- kekkai_cli-1.0.0/src/portal/enterprise/licensing.py +342 -0
- kekkai_cli-1.0.0/src/portal/enterprise/rbac.py +276 -0
- kekkai_cli-1.0.0/src/portal/enterprise/saml.py +595 -0
- kekkai_cli-1.0.0/src/portal/ops/__init__.py +53 -0
- kekkai_cli-1.0.0/src/portal/ops/backup.py +553 -0
- kekkai_cli-1.0.0/src/portal/ops/log_shipper.py +469 -0
- kekkai_cli-1.0.0/src/portal/ops/monitoring.py +517 -0
- kekkai_cli-1.0.0/src/portal/ops/restore.py +469 -0
- kekkai_cli-1.0.0/src/portal/ops/secrets.py +408 -0
- kekkai_cli-1.0.0/src/portal/ops/upgrade.py +591 -0
- kekkai_cli-1.0.0/src/portal/tenants.py +340 -0
- kekkai_cli-1.0.0/src/portal/uploads.py +259 -0
- kekkai_cli-1.0.0/src/portal/web.py +384 -0
- kekkai_cli-1.0.0/tests/test_cli_output.py +179 -0
- kekkai_cli-1.0.0/tests/test_dojo_import.py +83 -0
- kekkai_cli-1.0.0/tests/test_enterprise_audit.py +288 -0
- kekkai_cli-1.0.0/tests/test_enterprise_licensing.py +314 -0
- kekkai_cli-1.0.0/tests/test_enterprise_rbac.py +224 -0
- kekkai_cli-1.0.0/tests/test_enterprise_saml.py +326 -0
- kekkai_cli-1.0.0/tests/test_github_commenter_filter.py +224 -0
- kekkai_cli-1.0.0/tests/test_github_commenter_format.py +151 -0
- kekkai_cli-1.0.0/tests/test_github_commenter_limit.py +218 -0
- kekkai_cli-1.0.0/tests/test_github_commenter_sanitize.py +191 -0
- kekkai_cli-1.0.0/tests/test_installer_checksum.py +74 -0
- kekkai_cli-1.0.0/tests/test_installer_extract.py +176 -0
- kekkai_cli-1.0.0/tests/test_installer_manager.py +143 -0
- kekkai_cli-1.0.0/tests/test_installer_manifest.py +98 -0
- kekkai_cli-1.0.0/tests/test_installer_platform.py +100 -0
- kekkai_cli-1.0.0/tests/test_kekkai_cli.py +54 -0
- kekkai_cli-1.0.0/tests/test_kekkai_config.py +50 -0
- kekkai_cli-1.0.0/tests/test_kekkai_dojo.py +153 -0
- kekkai_cli-1.0.0/tests/test_kekkai_dojo_cli.py +102 -0
- kekkai_cli-1.0.0/tests/test_kekkai_manifest.py +33 -0
- kekkai_cli-1.0.0/tests/test_kekkai_paths.py +36 -0
- kekkai_cli-1.0.0/tests/test_kekkai_runner.py +43 -0
- kekkai_cli-1.0.0/tests/test_mermaid.py +374 -0
- kekkai_cli-1.0.0/tests/test_ops_backup.py +318 -0
- kekkai_cli-1.0.0/tests/test_ops_log_shipper.py +366 -0
- kekkai_cli-1.0.0/tests/test_ops_monitoring.py +379 -0
- kekkai_cli-1.0.0/tests/test_ops_restore.py +299 -0
- kekkai_cli-1.0.0/tests/test_ops_secrets.py +331 -0
- kekkai_cli-1.0.0/tests/test_ops_upgrade.py +418 -0
- kekkai_cli-1.0.0/tests/test_policy.py +359 -0
- kekkai_cli-1.0.0/tests/test_portal_api.py +157 -0
- kekkai_cli-1.0.0/tests/test_portal_auth.py +226 -0
- kekkai_cli-1.0.0/tests/test_portal_tenants.py +347 -0
- kekkai_cli-1.0.0/tests/test_portal_uploads.py +378 -0
- kekkai_cli-1.0.0/tests/test_portal_web.py +386 -0
- kekkai_cli-1.0.0/tests/test_redaction.py +16 -0
- kekkai_cli-1.0.0/tests/test_scanner_backends.py +201 -0
- kekkai_cli-1.0.0/tests/test_scanner_base.py +99 -0
- kekkai_cli-1.0.0/tests/test_scanner_container.py +69 -0
- kekkai_cli-1.0.0/tests/test_scanner_falco.py +179 -0
- kekkai_cli-1.0.0/tests/test_scanner_gitleaks.py +74 -0
- kekkai_cli-1.0.0/tests/test_scanner_native.py +186 -0
- kekkai_cli-1.0.0/tests/test_scanner_semgrep.py +72 -0
- kekkai_cli-1.0.0/tests/test_scanner_trivy.py +118 -0
- kekkai_cli-1.0.0/tests/test_scanner_zap.py +168 -0
- kekkai_cli-1.0.0/tests/test_slsa_provenance.py +210 -0
- kekkai_cli-1.0.0/tests/test_threatflow_chunking.py +192 -0
- kekkai_cli-1.0.0/tests/test_threatflow_model_adapter.py +229 -0
- kekkai_cli-1.0.0/tests/test_threatflow_prompts.py +156 -0
- kekkai_cli-1.0.0/tests/test_threatflow_redaction.py +170 -0
- kekkai_cli-1.0.0/tests/test_threatflow_sanitizer.py +495 -0
- kekkai_cli-1.0.0/tests/test_triage_audit.py +183 -0
- kekkai_cli-1.0.0/tests/test_triage_ignore.py +174 -0
- kekkai_cli-1.0.0/tests/test_triage_models.py +231 -0
- kekkai_cli-1.0.0/tests/test_url_policy.py +158 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kekkai-cli
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Kekkai/Regulon monorepo (local-first AppSec orchestration + compliance checker)
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: rich>=13.0.0
|
|
8
|
+
Requires-Dist: jsonschema>=4.20.0
|
|
9
|
+
Requires-Dist: textual>=0.50.0
|
|
10
|
+
Requires-Dist: httpx>=0.24.0
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="https://raw.githubusercontent.com/kademoslabs/assets/main/logos/kekkai-slim.png" alt="Kekkai CLI Logo" width="250"/>
|
|
14
|
+
</p>
|
|
15
|
+
<p align="center"><i>One command. Clean AppSec reports.</i></p>
|
|
16
|
+
<p align="center">
|
|
17
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg"/>
|
|
18
|
+
<img src="https://img.shields.io/badge/status-active-brightgreen"/>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
# Kekkai 🛡️
|
|
22
|
+
|
|
23
|
+
**Security that moves at developer speed.**
|
|
24
|
+
*Local-first orchestration for Trivy, Semgrep, and DefectDojo.*
|
|
25
|
+
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## ⚡ Quick Start
|
|
31
|
+
|
|
32
|
+
Stop fighting with Docker Compose. Start scanning in 30 seconds.
|
|
33
|
+
|
|
34
|
+
### Installation
|
|
35
|
+
|
|
36
|
+
**Option 1: pipx (Recommended - Isolated Environment)**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pipx install kekkai-cli
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Option 2: Homebrew (macOS/Linux)**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
brew tap kademoslabs/tap
|
|
46
|
+
brew install kekkai
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Option 3: Docker (No Python Required)**
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Build image
|
|
53
|
+
docker build -t kademoslabs/kekkai:latest -f apps/kekkai/Dockerfile .
|
|
54
|
+
|
|
55
|
+
# Run via wrapper script
|
|
56
|
+
./scripts/kekkai-docker --help
|
|
57
|
+
|
|
58
|
+
# Or set up alias
|
|
59
|
+
alias kekkai="$(pwd)/scripts/kekkai-docker"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Option 4: Scoop (Windows)**
|
|
63
|
+
|
|
64
|
+
```powershell
|
|
65
|
+
scoop bucket add kademoslabs https://github.com/kademoslabs/scoop-bucket
|
|
66
|
+
scoop install kekkai
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Option 5: pip (Traditional)**
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install kekkai-cli
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### 1. Scan your project (Local)
|
|
78
|
+
|
|
79
|
+
Run industry-standard scanners (Trivy, Semgrep, Gitleaks) in unified Docker containers without installing them individually.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
cd your-repo
|
|
83
|
+
kekkai scan
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 2. Spin up DefectDojo
|
|
88
|
+
|
|
89
|
+
Launch a full local vulnerability management platform (Nginx, Postgres, Redis, Celery) with one command.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
kekkai dojo up --wait --open
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 3. Generate a Threat Model (AI)
|
|
97
|
+
|
|
98
|
+
Generate a STRIDE threat model and Data Flow Diagram using your local LLM.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
kekkai threatflow --repo . --model-mode local
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 🛑 The Problem vs. Kekkai
|
|
108
|
+
|
|
109
|
+
| Feature | The Old Way | The Kekkai Way |
|
|
110
|
+
| --- | --- | --- |
|
|
111
|
+
| **Tooling** | Manually install/update 5+ tools (Trivy, Semgrep, etc.) | **One Binary.** `kekkai scan` auto-pulls and runs the latest scanner containers. |
|
|
112
|
+
| **Reporting** | Parse 5 different JSON formats manually. | **Unified Output.** One deduplicated `kekkai-report.json` for all findings. |
|
|
113
|
+
| **DefectDojo** | Write a 200-line `docker-compose.yml` and debug networking. | **One Command.** `kekkai dojo up` automates the entire stack setup. |
|
|
114
|
+
| **Threat Modeling** | Expensive consultants or manual whiteboarding. | **AI Agent.** `kekkai threatflow` generates `THREATS.md` locally. |
|
|
115
|
+
| **CI/CD** | Write complex bash scripts to break builds. | **Policy Engine.** `kekkai scan --ci --fail-on high`. |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 🔒 Enterprise Features (Portal)
|
|
120
|
+
|
|
121
|
+
For teams that need centralized management, **Kekkai Portal** offers:
|
|
122
|
+
|
|
123
|
+
* **SAML 2.0 SSO** with Replay Protection
|
|
124
|
+
* **Role-Based Access Control (RBAC)**
|
|
125
|
+
* **Cryptographically Signed Audit Logs**
|
|
126
|
+
|
|
127
|
+
*Built by Kademos Labs.*
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 📚 Documentation
|
|
132
|
+
|
|
133
|
+
- **[Automated Distribution Updates](docs/ci/automated-distributions.md)** - CI/CD distribution triggers
|
|
134
|
+
- **[CI Architecture](/.docs/development/ci-architecture.md)** - Developer guide for distribution automation
|
|
135
|
+
- **[Homebrew Maintenance](docs/ci/homebrew-maintenance.md)** - Homebrew tap management
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/kademoslabs/assets/main/logos/kekkai-slim.png" alt="Kekkai CLI Logo" width="250"/>
|
|
3
|
+
</p>
|
|
4
|
+
<p align="center"><i>One command. Clean AppSec reports.</i></p>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg"/>
|
|
7
|
+
<img src="https://img.shields.io/badge/status-active-brightgreen"/>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
# Kekkai 🛡️
|
|
11
|
+
|
|
12
|
+
**Security that moves at developer speed.**
|
|
13
|
+
*Local-first orchestration for Trivy, Semgrep, and DefectDojo.*
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## ⚡ Quick Start
|
|
20
|
+
|
|
21
|
+
Stop fighting with Docker Compose. Start scanning in 30 seconds.
|
|
22
|
+
|
|
23
|
+
### Installation
|
|
24
|
+
|
|
25
|
+
**Option 1: pipx (Recommended - Isolated Environment)**
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pipx install kekkai-cli
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Option 2: Homebrew (macOS/Linux)**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
brew tap kademoslabs/tap
|
|
35
|
+
brew install kekkai
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Option 3: Docker (No Python Required)**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Build image
|
|
42
|
+
docker build -t kademoslabs/kekkai:latest -f apps/kekkai/Dockerfile .
|
|
43
|
+
|
|
44
|
+
# Run via wrapper script
|
|
45
|
+
./scripts/kekkai-docker --help
|
|
46
|
+
|
|
47
|
+
# Or set up alias
|
|
48
|
+
alias kekkai="$(pwd)/scripts/kekkai-docker"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Option 4: Scoop (Windows)**
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
scoop bucket add kademoslabs https://github.com/kademoslabs/scoop-bucket
|
|
55
|
+
scoop install kekkai
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Option 5: pip (Traditional)**
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install kekkai-cli
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### 1. Scan your project (Local)
|
|
67
|
+
|
|
68
|
+
Run industry-standard scanners (Trivy, Semgrep, Gitleaks) in unified Docker containers without installing them individually.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
cd your-repo
|
|
72
|
+
kekkai scan
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 2. Spin up DefectDojo
|
|
77
|
+
|
|
78
|
+
Launch a full local vulnerability management platform (Nginx, Postgres, Redis, Celery) with one command.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
kekkai dojo up --wait --open
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 3. Generate a Threat Model (AI)
|
|
86
|
+
|
|
87
|
+
Generate a STRIDE threat model and Data Flow Diagram using your local LLM.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
kekkai threatflow --repo . --model-mode local
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 🛑 The Problem vs. Kekkai
|
|
97
|
+
|
|
98
|
+
| Feature | The Old Way | The Kekkai Way |
|
|
99
|
+
| --- | --- | --- |
|
|
100
|
+
| **Tooling** | Manually install/update 5+ tools (Trivy, Semgrep, etc.) | **One Binary.** `kekkai scan` auto-pulls and runs the latest scanner containers. |
|
|
101
|
+
| **Reporting** | Parse 5 different JSON formats manually. | **Unified Output.** One deduplicated `kekkai-report.json` for all findings. |
|
|
102
|
+
| **DefectDojo** | Write a 200-line `docker-compose.yml` and debug networking. | **One Command.** `kekkai dojo up` automates the entire stack setup. |
|
|
103
|
+
| **Threat Modeling** | Expensive consultants or manual whiteboarding. | **AI Agent.** `kekkai threatflow` generates `THREATS.md` locally. |
|
|
104
|
+
| **CI/CD** | Write complex bash scripts to break builds. | **Policy Engine.** `kekkai scan --ci --fail-on high`. |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🔒 Enterprise Features (Portal)
|
|
109
|
+
|
|
110
|
+
For teams that need centralized management, **Kekkai Portal** offers:
|
|
111
|
+
|
|
112
|
+
* **SAML 2.0 SSO** with Replay Protection
|
|
113
|
+
* **Role-Based Access Control (RBAC)**
|
|
114
|
+
* **Cryptographically Signed Audit Logs**
|
|
115
|
+
|
|
116
|
+
*Built by Kademos Labs.*
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 📚 Documentation
|
|
121
|
+
|
|
122
|
+
- **[Automated Distribution Updates](docs/ci/automated-distributions.md)** - CI/CD distribution triggers
|
|
123
|
+
- **[CI Architecture](/.docs/development/ci-architecture.md)** - Developer guide for distribution automation
|
|
124
|
+
- **[Homebrew Maintenance](docs/ci/homebrew-maintenance.md)** - Homebrew tap management
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "kekkai-cli"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
description = "Kekkai/Regulon monorepo (local-first AppSec orchestration + compliance checker)"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"rich>=13.0.0",
|
|
9
|
+
"jsonschema>=4.20.0",
|
|
10
|
+
"textual>=0.50.0",
|
|
11
|
+
"httpx>=0.24.0",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
[project.scripts]
|
|
15
|
+
kekkai = "kekkai.cli:main"
|
|
16
|
+
kekkai-portal = "portal.web:main"
|
|
17
|
+
|
|
18
|
+
[tool.ruff]
|
|
19
|
+
target-version = "py312"
|
|
20
|
+
line-length = 100
|
|
21
|
+
extend-exclude = ["dist", "build", ".venv"]
|
|
22
|
+
lint.select = ["E", "F", "I", "B", "UP", "S", "SIM"]
|
|
23
|
+
lint.ignore = ["S101"] # allow asserts in tests
|
|
24
|
+
lint.per-file-ignores = { "tests/**" = ["S"], "src/kekkai_core/docker/**" = ["S603"], "src/kekkai_core/slsa/**" = ["S603", "S607"], "src/kekkai/github/**" = ["S105"] }
|
|
25
|
+
|
|
26
|
+
[tool.mypy]
|
|
27
|
+
python_version = "3.12"
|
|
28
|
+
mypy_path = "src"
|
|
29
|
+
strict = true
|
|
30
|
+
warn_unused_configs = true
|
|
31
|
+
warn_return_any = true
|
|
32
|
+
disallow_any_generics = true
|
|
33
|
+
no_implicit_optional = true
|
|
34
|
+
check_untyped_defs = true
|
|
35
|
+
exclude = ["apps/"]
|
|
36
|
+
|
|
37
|
+
[tool.pytest.ini_options]
|
|
38
|
+
addopts = "-q"
|
|
39
|
+
testpaths = ["tests"]
|
|
40
|
+
markers = [
|
|
41
|
+
"integration: integration tests",
|
|
42
|
+
"e2e: end-to-end tests",
|
|
43
|
+
"regression: regression/golden tests",
|
|
44
|
+
"benchmark: performance benchmark tests",
|
|
45
|
+
"requires_admin: tests requiring admin privileges"
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[tool.coverage.run]
|
|
49
|
+
branch = true
|
|
50
|
+
source = ["src"]
|
|
51
|
+
|
|
52
|
+
[tool.coverage.report]
|
|
53
|
+
show_missing = true
|
|
54
|
+
skip_covered = false
|
|
55
|
+
fail_under = 69
|
|
56
|
+
exclude_lines = [
|
|
57
|
+
"pragma: no cover",
|
|
58
|
+
"if TYPE_CHECKING:",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[build-system]
|
|
62
|
+
requires = ["setuptools>=69", "wheel"]
|
|
63
|
+
build-backend = "setuptools.build_meta"
|
|
64
|
+
|
|
65
|
+
[tool.setuptools]
|
|
66
|
+
package-dir = {"" = "src"}
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.packages.find]
|
|
69
|
+
where = ["src"]
|