cipher-security 1.2.0__tar.gz → 1.3.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.
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.github/workflows/ci.yml +6 -6
- cipher_security-1.3.0/.github/workflows/release.yml +124 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.gitignore +1 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/CHANGELOG.md +26 -1
- {cipher_security-1.2.0 → cipher_security-1.3.0}/PKG-INFO +121 -28
- {cipher_security-1.2.0 → cipher_security-1.3.0}/README.md +114 -27
- cipher_security-1.3.0/completions/cipher.bash +17 -0
- cipher_security-1.3.0/completions/cipher.fish +31 -0
- cipher_security-1.3.0/completions/cipher.zsh +14 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/config.yaml.example +15 -1
- {cipher_security-1.2.0 → cipher_security-1.3.0}/pyproject.toml +7 -2
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/app.py +338 -10
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/cli.py +1 -1
- cipher_security-1.3.0/src/gateway/client.py +248 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/complexity.py +5 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/config.py +20 -3
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/dashboard.py +1 -1
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/gateway.py +7 -0
- cipher_security-1.3.0/src/gateway/plugins.py +376 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/prompt.py +15 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/conftest.py +20 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_client.py +61 -0
- cipher_security-1.3.0/tests/test_complexity.py +341 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_config.py +35 -0
- cipher_security-1.3.0/tests/test_plugins.py +234 -0
- cipher_security-1.3.0/vscode/.gitignore +3 -0
- cipher_security-1.3.0/vscode/README.md +47 -0
- cipher_security-1.3.0/vscode/media/cipher-icon.svg +4 -0
- cipher_security-1.3.0/vscode/package-lock.json +4019 -0
- cipher_security-1.3.0/vscode/package.json +124 -0
- cipher_security-1.3.0/vscode/src/extension.ts +100 -0
- cipher_security-1.3.0/vscode/src/gateway.ts +91 -0
- cipher_security-1.3.0/vscode/src/sidebar.ts +408 -0
- cipher_security-1.3.0/vscode/tsconfig.json +16 -0
- cipher_security-1.2.0/.github/workflows/release.yml +0 -63
- cipher_security-1.2.0/src/gateway/client.py +0 -57
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.dockerignore +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.github/ISSUE_TEMPLATE/knowledge_request.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/.hooks/post-commit +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/CLAUDE.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/CONTRIBUTING.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/Dockerfile +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/Dockerfile.bot +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/LICENSE +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/Modelfile +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-architect.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-blue.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-incident.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-privacy.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-purple.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-recon.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-red.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/agents/cipher-researcher.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/aisec.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/audit.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/brief.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/cc.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/claudeapi.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/cloud.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/crypto.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/cve.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/devsecops.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/engage.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/export.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/forensics.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/hardening.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/hunt.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/ics.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/insider.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/ir.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/malware.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/mobile.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/ollama.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/phishing.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/privacy.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/purple.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/recon.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/redteam.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/report.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/resume.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/setup-hooks.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/sigma.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/smart.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/threatintel.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/threatmodel.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/update.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/commands/web.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/docker-compose.yml +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/hooks/cipher-context-monitor.js +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/hooks/cipher-statusline.js +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/00-MASTER-INDEX.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/active-directory-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/ai-defense-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/api-exploitation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/attack-chains-synthesis.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/aws-security-ultimate.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/azure-security-ultimate.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/binary-exploitation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/blockchain-web3-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/breach-case-studies-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/bugbounty-methodology-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/c2-postexploit-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/cloud-attacks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/cloud-infra-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/compliance-frameworks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/container-k8s-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/crypto-pki-tls-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/ctf-methodology-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/curated-resources-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/data-protection-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/defensive-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/defensive-synthesis.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/dev-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/devsecops-sdlc-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/dfir-hunting-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/dns-email-infra-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/edr-av-internals-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/email-forensics-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/email-phishing-se-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/emerging-threats-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/encoding-manipulation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/evasion-detection-catalog.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/evasion-techniques-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/exfil-tunneling-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/forensics-artifacts-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/gcp-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/grc-risk-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/hardening-guides-ultimate.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/ics-scada-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/identity-auth-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/incident-playbooks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/index.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/insider-threat-dlp-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/kubernetes-attacks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/linux-exploitation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/logging-monitoring-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/malware-analysis-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/malware-re-evasion-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/mitre-attack-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/mobile-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/network-attacks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/network-forensics-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/network-protocol-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/network-segmentation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/offensive-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/osint-tradecraft-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/password-credential-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/pentest-cheatsheet-ultimate.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/pentest-reporting-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/pentestgpt-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/powershell-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/privacy-crypto-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/privacy-engineering-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/privacy-osint-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/privacy-regulations-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/purple-team-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/purple-team-exercises-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/recon-osint-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/redteam-infra-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/secops-runbooks-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/secure-coding-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/secure-infrastructure-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-architecture-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-automation-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-certifications-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-leadership-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-mastery-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-metrics-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/security-scenarios.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/shells-arsenal-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/siem-soc-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/sigma-detection-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/social-engineering-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/startup-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/stylesheets/cipher-cards.css +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/stylesheets/cipher-glow.css +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/stylesheets/cipher-theme.css +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/supplementary-security-knowledge.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/supply-chain-security-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/threat-hunting-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/threat-intel-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/threat-modeling-arch-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/timeline-analysis-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/vuln-research-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/websec-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/windows-ad-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/windows-eventlog-mastery.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/windows-internals-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/knowledge/wireless-physical-iot-deep.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/mkdocs.yml +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/scripts/docs-build.sh +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/scripts/docs-serve.sh +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/scripts/install.ps1 +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/scripts/install.sh +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/scripts/setup-ollama.sh +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/automation-scripting/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/blue-team/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/incident-response/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/osint-recon/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/privacy-engineering/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/purple-team/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/red-team/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/red-team/active-directory/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/red-team/cloud/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/red-team/post-exploitation/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/red-team/web/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/security-architecture/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/skills/threat-intelligence/SKILL.md +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/__init__.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/bot/__init__.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/bot/bot.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/bot/format.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/bot/session.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/__init__.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/migrations.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/mode.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/retriever.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/src/gateway/theme.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/__init__.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_bot.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_cli_commands.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_cli_smart.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_config_edge_cases.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_dashboard.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_e2e_pipeline.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_format.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_gateway.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_guardrails.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_install_scripts.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_integration.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_knowledge_format.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_migrations.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_mode.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_mode_routing.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_performance.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_prompt.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_rag_quality.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_retriever.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_security_scan.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_session.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_setup_signal.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_skill_content.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/tests/test_streaming.py +0 -0
- {cipher_security-1.2.0 → cipher_security-1.3.0}/uv.lock +0 -0
|
@@ -14,10 +14,10 @@ jobs:
|
|
|
14
14
|
python-version: ["3.14"]
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
18
|
|
|
19
19
|
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
-
uses: actions/setup-python@
|
|
20
|
+
uses: actions/setup-python@v6
|
|
21
21
|
with:
|
|
22
22
|
python-version: ${{ matrix.python-version }}
|
|
23
23
|
|
|
@@ -31,15 +31,15 @@ jobs:
|
|
|
31
31
|
env:
|
|
32
32
|
PYTHONPATH: src
|
|
33
33
|
run: |
|
|
34
|
-
pytest tests/ -v --ignore=tests/test_integration.py --tb=short
|
|
34
|
+
pytest tests/ -v --ignore=tests/test_integration.py --ignore=tests/test_performance.py --ignore=tests/test_gateway.py --tb=short
|
|
35
35
|
|
|
36
36
|
lint:
|
|
37
37
|
runs-on: ubuntu-latest
|
|
38
38
|
steps:
|
|
39
|
-
- uses: actions/checkout@
|
|
39
|
+
- uses: actions/checkout@v6
|
|
40
40
|
|
|
41
41
|
- name: Set up Python
|
|
42
|
-
uses: actions/setup-python@
|
|
42
|
+
uses: actions/setup-python@v6
|
|
43
43
|
with:
|
|
44
44
|
python-version: "3.14"
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@ jobs:
|
|
|
54
54
|
knowledge-check:
|
|
55
55
|
runs-on: ubuntu-latest
|
|
56
56
|
steps:
|
|
57
|
-
- uses: actions/checkout@
|
|
57
|
+
- uses: actions/checkout@v6
|
|
58
58
|
|
|
59
59
|
- name: Verify knowledge base integrity
|
|
60
60
|
run: |
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
packages: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
pypi:
|
|
14
|
+
name: Publish to PyPI
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
environment: release
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v6
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.14"
|
|
26
|
+
|
|
27
|
+
- name: Install build tools
|
|
28
|
+
run: pip install build twine
|
|
29
|
+
|
|
30
|
+
- name: Build package
|
|
31
|
+
run: python -m build
|
|
32
|
+
|
|
33
|
+
- name: Publish to PyPI
|
|
34
|
+
env:
|
|
35
|
+
TWINE_USERNAME: __token__
|
|
36
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
37
|
+
run: twine upload dist/* --skip-existing
|
|
38
|
+
|
|
39
|
+
docker:
|
|
40
|
+
name: Push Docker image
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v6
|
|
44
|
+
|
|
45
|
+
- name: Log in to GHCR
|
|
46
|
+
uses: docker/login-action@v3
|
|
47
|
+
with:
|
|
48
|
+
registry: ghcr.io
|
|
49
|
+
username: ${{ github.actor }}
|
|
50
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
+
|
|
52
|
+
- name: Extract version from tag
|
|
53
|
+
id: version
|
|
54
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
55
|
+
|
|
56
|
+
- name: Build and push
|
|
57
|
+
uses: docker/build-push-action@v6
|
|
58
|
+
with:
|
|
59
|
+
context: .
|
|
60
|
+
push: true
|
|
61
|
+
tags: |
|
|
62
|
+
ghcr.io/defconxt/cipher:latest
|
|
63
|
+
ghcr.io/defconxt/cipher:${{ steps.version.outputs.VERSION }}
|
|
64
|
+
|
|
65
|
+
vscode:
|
|
66
|
+
name: Package VS Code extension
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
steps:
|
|
69
|
+
- uses: actions/checkout@v6
|
|
70
|
+
|
|
71
|
+
- name: Set up Node.js
|
|
72
|
+
uses: actions/setup-node@v4
|
|
73
|
+
with:
|
|
74
|
+
node-version: "22"
|
|
75
|
+
|
|
76
|
+
- name: Extract version from tag
|
|
77
|
+
id: version
|
|
78
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
79
|
+
|
|
80
|
+
- name: Update extension version
|
|
81
|
+
working-directory: vscode
|
|
82
|
+
run: npm version ${{ steps.version.outputs.VERSION }} --no-git-tag-version
|
|
83
|
+
|
|
84
|
+
- name: Install dependencies and build
|
|
85
|
+
working-directory: vscode
|
|
86
|
+
run: |
|
|
87
|
+
npm install
|
|
88
|
+
npm run compile
|
|
89
|
+
|
|
90
|
+
- name: Package VSIX
|
|
91
|
+
working-directory: vscode
|
|
92
|
+
run: npx @vscode/vsce package --no-dependencies
|
|
93
|
+
|
|
94
|
+
- name: Upload VSIX to GitHub Release
|
|
95
|
+
uses: softprops/action-gh-release@v2
|
|
96
|
+
with:
|
|
97
|
+
files: vscode/*.vsix
|
|
98
|
+
|
|
99
|
+
github-release:
|
|
100
|
+
name: Create GitHub Release
|
|
101
|
+
runs-on: ubuntu-latest
|
|
102
|
+
needs: [pypi, docker, vscode]
|
|
103
|
+
steps:
|
|
104
|
+
- uses: actions/checkout@v6
|
|
105
|
+
|
|
106
|
+
- name: Extract version from tag
|
|
107
|
+
id: version
|
|
108
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
109
|
+
|
|
110
|
+
- name: Extract changelog for version
|
|
111
|
+
id: changelog
|
|
112
|
+
run: |
|
|
113
|
+
# Extract the section for this version from CHANGELOG.md
|
|
114
|
+
awk '/^## \['"${{ steps.version.outputs.VERSION }}"'\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md > /tmp/release-notes.md
|
|
115
|
+
echo "NOTES<<EOF" >> $GITHUB_OUTPUT
|
|
116
|
+
cat /tmp/release-notes.md >> $GITHUB_OUTPUT
|
|
117
|
+
echo "EOF" >> $GITHUB_OUTPUT
|
|
118
|
+
|
|
119
|
+
- name: Create/update GitHub Release
|
|
120
|
+
uses: softprops/action-gh-release@v2
|
|
121
|
+
with:
|
|
122
|
+
name: CIPHER v${{ steps.version.outputs.VERSION }}
|
|
123
|
+
body: ${{ steps.changelog.outputs.NOTES }}
|
|
124
|
+
generate_release_notes: false
|
|
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.3.0] - 2026-03-16
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Multi-provider via LiteLLM** — `pip install cipher-security[multi]` enables any LiteLLM-supported model (OpenAI, Gemini, Mistral, Groq, Azure, etc.) via `--backend litellm` or `llm_backend: litellm` in config. Adapter wraps `litellm.completion()` behind Anthropic-compatible interface — no gateway branching needed.
|
|
15
|
+
- **Plugin system** — extend CIPHER with custom skills. CLI: `cipher plugin list/install/remove/info`. Plugins discovered from `~/.config/cipher/plugins/` and Python entry points (`cipher.skills` group). Priority-sorted injection into system prompt. 12 tests.
|
|
16
|
+
- **VS Code extension** — sidebar chat with streaming, right-click code analysis, mode/backend selectors. Subprocess-based (no daemon). Source in `vscode/`.
|
|
17
|
+
- **Web UI** — `cipher web` launches a browser-accessible Textual interface via `textual-serve`. Requires `pip install cipher-security[web]`.
|
|
18
|
+
- **Bash and Zsh shell completions** — `completions/cipher.bash` and `completions/cipher.zsh` alongside existing Fish completions.
|
|
19
|
+
- **Setup wizard LiteLLM support** — `cipher setup` now offers LiteLLM as option 3 with model string, API key, and base URL prompts.
|
|
20
|
+
- Optional dependency extras: `[multi]` (LiteLLM), `[web]` (Textual web), `[all]` (everything)
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Architecture diagram updated: three backends (Ollama, Claude, LiteLLM), seven interfaces (CLI, Dashboard, Web, VS Code, Claude Code, Signal Bot, Docker)
|
|
25
|
+
- README rewritten: multi-provider docs, plugin system, VS Code extension, web UI, shell completions, updated test count (485), corrected skill count (9)
|
|
26
|
+
- CI updated to `actions/checkout@v6` and `actions/setup-python@v6` (Node.js 24 migration)
|
|
27
|
+
- VS Code gateway simplified from spawn+fallback to clean `execFile` invocation
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Setup wizard only offered ollama/claude — added litellm as third option
|
|
32
|
+
- Setup step 2 had no litellm config branch — added model, api_key, api_base prompts
|
|
33
|
+
|
|
10
34
|
## [1.2.0] - 2026-03-16
|
|
11
35
|
|
|
12
36
|
### Added
|
|
@@ -100,7 +124,8 @@ Version bump only — no functional changes beyond 0.3.0.
|
|
|
100
124
|
- CI install all deps including signal extra
|
|
101
125
|
- Resolve ruff lint errors (F401, F841)
|
|
102
126
|
|
|
103
|
-
[Unreleased]: https://github.com/defconxt/CIPHER/compare/v1.
|
|
127
|
+
[Unreleased]: https://github.com/defconxt/CIPHER/compare/v1.3.0...HEAD
|
|
128
|
+
[1.3.0]: https://github.com/defconxt/CIPHER/compare/v1.2.0...v1.3.0
|
|
104
129
|
[1.2.0]: https://github.com/defconxt/CIPHER/compare/v1.1.0...v1.2.0
|
|
105
130
|
[1.1.0]: https://github.com/defconxt/CIPHER/compare/v0.3.0...v1.1.0
|
|
106
131
|
[0.3.0]: https://github.com/defconxt/CIPHER/compare/v0.2.0...v0.3.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cipher-security
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: CIPHER — Security Engineering Assistant with RAG-powered knowledge base
|
|
5
5
|
Project-URL: Homepage, https://github.com/defconxt/CIPHER
|
|
6
6
|
Project-URL: Documentation, https://blacktemple.net/cipher
|
|
@@ -27,9 +27,15 @@ Requires-Dist: rich>=13.0
|
|
|
27
27
|
Requires-Dist: textual>=1.0
|
|
28
28
|
Requires-Dist: typer>=0.12
|
|
29
29
|
Provides-Extra: all
|
|
30
|
+
Requires-Dist: litellm>=1.40.0; extra == 'all'
|
|
30
31
|
Requires-Dist: signalbot>=0.25.0; extra == 'all'
|
|
32
|
+
Requires-Dist: textual-serve>=1.1.0; extra == 'all'
|
|
33
|
+
Provides-Extra: multi
|
|
34
|
+
Requires-Dist: litellm>=1.40.0; extra == 'multi'
|
|
31
35
|
Provides-Extra: signal
|
|
32
36
|
Requires-Dist: signalbot>=0.25.0; extra == 'signal'
|
|
37
|
+
Provides-Extra: web
|
|
38
|
+
Requires-Dist: textual-serve>=1.1.0; extra == 'web'
|
|
33
39
|
Description-Content-Type: text/markdown
|
|
34
40
|
|
|
35
41
|
<!-- Copyright (c) 2026 defconxt. All rights reserved. -->
|
|
@@ -55,8 +61,8 @@ Description-Content-Type: text/markdown
|
|
|
55
61
|
[](https://python.org)
|
|
56
62
|
|
|
57
63
|
A principal-level security engineering assistant with 96 deep-dive knowledge docs,
|
|
58
|
-
RAG-powered retrieval, 7 operating modes, and
|
|
59
|
-
Runs locally via Ollama
|
|
64
|
+
RAG-powered retrieval, 7 operating modes, and a plugin system.
|
|
65
|
+
Runs locally via Ollama, cloud via Claude API, or any provider via LiteLLM.
|
|
60
66
|
|
|
61
67
|
[](https://asciinema.org/a/0MjCmtsarnsztdQ6)
|
|
62
68
|
|
|
@@ -86,6 +92,14 @@ pip install cipher-security
|
|
|
86
92
|
cipher setup
|
|
87
93
|
```
|
|
88
94
|
|
|
95
|
+
**With optional extras:**
|
|
96
|
+
```bash
|
|
97
|
+
pip install cipher-security[multi] # LiteLLM multi-provider support
|
|
98
|
+
pip install cipher-security[web] # Textual web UI
|
|
99
|
+
pip install cipher-security[signal] # Signal bot
|
|
100
|
+
pip install cipher-security[all] # Everything
|
|
101
|
+
```
|
|
102
|
+
|
|
89
103
|
**Docker:**
|
|
90
104
|
```bash
|
|
91
105
|
docker run -it ghcr.io/defconxt/cipher "how do I detect Kerberoasting"
|
|
@@ -103,9 +117,15 @@ cipher "[MODE: RED] exploit AS-REP roasting in Active Directory"
|
|
|
103
117
|
# Auto-route: simple queries → local Ollama, complex → Claude API
|
|
104
118
|
cipher --smart "design a zero trust architecture for multi-cloud"
|
|
105
119
|
|
|
120
|
+
# Use any LiteLLM-supported model
|
|
121
|
+
cipher --backend litellm "analyze this CVE for exploitability"
|
|
122
|
+
|
|
106
123
|
# Interactive dashboard
|
|
107
124
|
cipher dashboard
|
|
108
125
|
|
|
126
|
+
# Web UI (requires cipher-security[web])
|
|
127
|
+
cipher web
|
|
128
|
+
|
|
109
129
|
# System health check
|
|
110
130
|
cipher doctor
|
|
111
131
|
```
|
|
@@ -138,7 +158,50 @@ RAG-powered retrieval over 145K+ lines of security knowledge:
|
|
|
138
158
|
- **Emerging**: Breach case studies (12 major incidents), AI/ML security, abliteration/alignment attacks, vulnerability research, ransomware ecosystem
|
|
139
159
|
- **Recon**: tomnomnom toolchain (assetfinder, waybackurls, kxss, unfurl), composable pipeline patterns, OSINT tradecraft
|
|
140
160
|
|
|
141
|
-
###
|
|
161
|
+
### Multi-Provider Support
|
|
162
|
+
|
|
163
|
+
Three built-in backends with smart routing:
|
|
164
|
+
|
|
165
|
+
| Backend | Setup | Use Case |
|
|
166
|
+
|---------|-------|----------|
|
|
167
|
+
| **Ollama** | `cipher setup` → option 1 | Free local inference, privacy-first |
|
|
168
|
+
| **Claude** | `cipher setup` → option 2 | High-quality cloud reasoning |
|
|
169
|
+
| **LiteLLM** | `pip install cipher-security[multi]` | Any provider: OpenAI, Gemini, Mistral, Groq, Azure, etc. |
|
|
170
|
+
|
|
171
|
+
Smart routing (`--smart`) auto-classifies query complexity and routes between Ollama (simple/moderate) and Claude (complex/expert). LiteLLM is always explicit via `--backend litellm` or `llm_backend: litellm` in config.
|
|
172
|
+
|
|
173
|
+
### Plugin System
|
|
174
|
+
|
|
175
|
+
Extend CIPHER with custom skills:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
cipher plugin list # Show installed plugins
|
|
179
|
+
cipher plugin install ./my-plugin # Install from directory
|
|
180
|
+
cipher plugin remove my-plugin # Remove a plugin
|
|
181
|
+
cipher plugin info my-plugin # Show plugin details
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Plugins are discovered from `~/.config/cipher/plugins/` and Python entry points (`cipher.skills` group). Each plugin provides a `plugin.yaml` manifest with metadata, a priority (0–100), and optional skill content that's injected into the system prompt.
|
|
185
|
+
|
|
186
|
+
See [Plugin Development](https://blacktemple.net/cipher/plugins) for the full spec.
|
|
187
|
+
|
|
188
|
+
### VS Code Extension
|
|
189
|
+
|
|
190
|
+
Full security assistant inside VS Code:
|
|
191
|
+
|
|
192
|
+
- **Sidebar chat** — conversational security queries with streaming responses
|
|
193
|
+
- **Right-click analysis** — select code, right-click → "Analyze with CIPHER"
|
|
194
|
+
- **Mode & backend selectors** — switch modes and providers from the UI
|
|
195
|
+
- **No daemon required** — queries go through the `cipher-gw` CLI
|
|
196
|
+
|
|
197
|
+
Install from `vscode/` directory:
|
|
198
|
+
```bash
|
|
199
|
+
cd vscode && npm install && npm run compile
|
|
200
|
+
# Then "Install from VSIX" in VS Code, or:
|
|
201
|
+
npx @vscode/vsce package && code --install-extension cipher-security-*.vsix
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 34 Slash Commands (Claude Code)
|
|
142
205
|
|
|
143
206
|
```
|
|
144
207
|
/cipher:redteam /cipher:web /cipher:phishing /cipher:malware
|
|
@@ -160,8 +223,10 @@ and a prioritized action plan. Inspired by [h1-brain](https://github.com/PatrikF
|
|
|
160
223
|
|
|
161
224
|
| Interface | Command | Cost |
|
|
162
225
|
|-----------|---------|------|
|
|
163
|
-
| **CLI** | `cipher "query"` | Free (Ollama) or paid (Claude) |
|
|
164
|
-
| **Dashboard** | `cipher dashboard` | Free (Ollama) or paid (Claude) |
|
|
226
|
+
| **CLI** | `cipher "query"` | Free (Ollama) or paid (Claude/LiteLLM) |
|
|
227
|
+
| **Dashboard** | `cipher dashboard` | Free (Ollama) or paid (Claude/LiteLLM) |
|
|
228
|
+
| **Web UI** | `cipher web` | Free (Ollama) or paid (Claude/LiteLLM) |
|
|
229
|
+
| **VS Code** | Extension sidebar | Free (Ollama) or paid (Claude/LiteLLM) |
|
|
165
230
|
| **Claude Code** | `/cipher:cc "query"` | Included with Claude Code |
|
|
166
231
|
| **Signal Bot** | Message the bot | Free (Ollama) or paid (Claude) |
|
|
167
232
|
| **Docker** | `docker run -it cipher "query"` | Free (Ollama) or paid (Claude) |
|
|
@@ -174,6 +239,23 @@ Semantic search over the entire knowledge base:
|
|
|
174
239
|
- Top-5 retrieval injected into system prompt before every query
|
|
175
240
|
- Auto re-ingests on knowledge base changes (git hook)
|
|
176
241
|
|
|
242
|
+
### Shell Completions
|
|
243
|
+
|
|
244
|
+
Tab completions for all commands, options, and modes:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Bash — add to ~/.bashrc
|
|
248
|
+
source <(cipher completions bash)
|
|
249
|
+
# or: cp completions/cipher.bash /etc/bash_completion.d/
|
|
250
|
+
|
|
251
|
+
# Zsh — add to ~/.zshrc
|
|
252
|
+
source <(cipher completions zsh)
|
|
253
|
+
# or: cp completions/cipher.zsh ~/.zsh/completions/_cipher
|
|
254
|
+
|
|
255
|
+
# Fish
|
|
256
|
+
cp completions/cipher.fish ~/.config/fish/completions/
|
|
257
|
+
```
|
|
258
|
+
|
|
177
259
|
### Updating
|
|
178
260
|
|
|
179
261
|
```bash
|
|
@@ -214,37 +296,42 @@ cipher "query" Send a security query (default command)
|
|
|
214
296
|
cipher --smart "query" Auto-route: simple→Ollama, complex→Claude
|
|
215
297
|
cipher --backend ollama Force local inference
|
|
216
298
|
cipher --backend claude Force cloud inference
|
|
299
|
+
cipher --backend litellm Use LiteLLM provider (requires [multi] extra)
|
|
217
300
|
cipher setup Interactive onboarding wizard
|
|
218
301
|
cipher dashboard Cyberpunk terminal UI
|
|
302
|
+
cipher web Web UI via Textual (requires [web] extra)
|
|
219
303
|
cipher doctor Diagnostics and health checks
|
|
220
304
|
cipher doctor --fix Auto-repair issues
|
|
221
305
|
cipher status Show system status
|
|
222
306
|
cipher ingest Re-index the knowledge base
|
|
307
|
+
cipher plugin list List installed plugins
|
|
308
|
+
cipher plugin install DIR Install a plugin
|
|
309
|
+
cipher plugin remove NAME Remove a plugin
|
|
223
310
|
cipher version Show version
|
|
224
311
|
```
|
|
225
312
|
|
|
226
313
|
## Architecture
|
|
227
314
|
|
|
228
315
|
```
|
|
229
|
-
|
|
230
|
-
│
|
|
231
|
-
│ CLI · Dashboard ·
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
│
|
|
243
|
-
┌──────▼──────┐
|
|
244
|
-
│ Ollama │
|
|
245
|
-
│ (local) │
|
|
246
|
-
│ qwen2.5:32b │
|
|
247
|
-
└─────────────┘
|
|
316
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
317
|
+
│ Interfaces │
|
|
318
|
+
│ CLI · Dashboard · Web · VS Code · Claude Code · Signal Bot │
|
|
319
|
+
└────────────────────────────┬─────────────────────────────────┘
|
|
320
|
+
│
|
|
321
|
+
┌────────▼────────┐
|
|
322
|
+
│ Gateway │
|
|
323
|
+
│ Mode Detection │──── 7 modes
|
|
324
|
+
│ Prompt Assembly│──── 9 skills + plugins
|
|
325
|
+
│ RAG Retrieval │──── 14,900 chunks
|
|
326
|
+
└────────┬────────┘
|
|
327
|
+
│
|
|
328
|
+
┌─────────────────┼─────────────────┐
|
|
329
|
+
│ │ │
|
|
330
|
+
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
|
|
331
|
+
│ Ollama │ │ Claude API │ │ LiteLLM │
|
|
332
|
+
│ (local) │ │ (cloud) │ │ (any model) │
|
|
333
|
+
│ qwen2.5:32b │ │ sonnet-4-5 │ │ gpt-4o, etc │
|
|
334
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
248
335
|
```
|
|
249
336
|
|
|
250
337
|
## Configuration
|
|
@@ -254,7 +341,7 @@ Config file: `config.yaml` (project root) or `~/.config/cipher/config.yaml`
|
|
|
254
341
|
Supports `${VAR}` and `${VAR:-default}` environment variable substitution:
|
|
255
342
|
|
|
256
343
|
```yaml
|
|
257
|
-
llm_backend: ollama
|
|
344
|
+
llm_backend: ollama # ollama | claude | litellm
|
|
258
345
|
|
|
259
346
|
ollama:
|
|
260
347
|
base_url: "http://127.0.0.1:11434"
|
|
@@ -265,6 +352,12 @@ claude:
|
|
|
265
352
|
api_key: "${ANTHROPIC_API_KEY}"
|
|
266
353
|
model: "claude-sonnet-4-5-20250929"
|
|
267
354
|
timeout: 120
|
|
355
|
+
|
|
356
|
+
litellm:
|
|
357
|
+
model: "openai/gpt-4o" # Any LiteLLM model string
|
|
358
|
+
api_key: "${OPENAI_API_KEY}"
|
|
359
|
+
api_base: "" # Optional custom endpoint
|
|
360
|
+
timeout: 120
|
|
268
361
|
```
|
|
269
362
|
|
|
270
363
|
Priority: env vars > project config > home config.
|
|
@@ -274,11 +367,11 @@ Priority: env vars > project config > home config.
|
|
|
274
367
|
```bash
|
|
275
368
|
git clone https://github.com/defconxt/CIPHER.git && cd CIPHER
|
|
276
369
|
python -m venv .venv && source .venv/bin/activate
|
|
277
|
-
pip install -e ".[
|
|
370
|
+
pip install -e ".[all]"
|
|
278
371
|
pytest tests/ --ignore=tests/test_integration.py
|
|
279
372
|
```
|
|
280
373
|
|
|
281
|
-
**
|
|
374
|
+
**485 tests** covering gateway, mode routing, RAG quality, architecture guardrails, configuration, CLI commands, streaming, plugins, multi-provider, and security scanning.
|
|
282
375
|
|
|
283
376
|
## Contributing
|
|
284
377
|
|