Remy Agent
AI-Powered Codebase Bug & Vulnerability Scanning CLI
What is Remy?
Remy is a terminal-native AI security and bug-scanning agent. It performs static application security testing (SAST) plus an optional AI-assisted logic/bug detection pass across your codebase, then generates a single, structured Fix Prompt — ready to paste into any AI coding agent of your choice.
Remy is the finder and prompt-compiler, not the editor. That makes it lightweight, model-agnostic, and safe to run on any codebase without needing write access.
Features
- Multi-engine SAST — Python AST rules for injection, insecure deserialization, weak crypto, and more
- Secrets scanner — regex + Shannon entropy detection for API keys, tokens, and credentials across all file types
- API surface auditor — finds unauthenticated routes, missing rate limiting, and overly permissive CORS
- Auth/bypass scanner — detects JWT bypass, IDOR patterns, non-constant-time comparisons, client-controlled admin flags
- Dependency scanner — cross-references your packages against the OSV vulnerability database
- LLM logic-bug pass (
--deep) — sends code to your AI provider to catch race conditions, edge cases, and business logic flaws - Multi-provider AI — bring your own key for OpenRouter, Groq, OpenAI, Anthropic, xAI, NVIDIA NIM, or run fully local with Ollama
- Drop-in Fix Prompt — output is a portable Markdown artifact you paste into Claude Code, Cursor, Windsurf, Copilot, or any other agent
Install
pip install remy-agent
Quick Start
# First run — launches config wizard
remy
# After setup — scan current directory
remy scan
# Deep scan (SAST + LLM logic pass)
remy scan --deep
# Scan a specific path
remy scan /path/to/your/project
# Secrets only (fast, no LLM needed)
remy scan --secrets-only
# Get the Fix Prompt and copy to clipboard
remy prompt --copy
Supported Providers
| Provider | API Key Required | Notes |
|---|---|---|
| OpenRouter | ✅ Yes | Routes to 200+ models. Great flexibility. |
| Groq | ✅ Yes | Ultra-low latency. Best for fast bulk scanning. |
| OpenAI | ✅ Yes | GPT-4o and newer models. |
| Anthropic | ✅ Yes | Claude family. Excellent at code reasoning. |
| xAI | ✅ Yes | Grok model family. OpenAI-compatible. |
| NVIDIA NIM | ✅ Yes | Cloud or self-hosted NIM endpoint. |
| Ollama | ❌ No | Fully local. Run ollama serve first. |
Example Terminal Output
██████╗ ███████╗███╗ ███╗██╗ ██╗
██╔══██╗██╔════╝████╗ ████║╚██╗ ██╔╝
██████╔╝█████╗ ██╔████╔██║ ╚████╔╝
██╔══██╗██╔══╝ ██║╚██╔╝██║ ╚██╔╝
██║ ██║███████╗██║ ╚═╝ ██║ ██║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝
┌─────────────────────────────────────────────┐
│ Remy Scan Report — 14 Finding(s) │
│ 🔴 CRITICAL 3 ████████░░░░░░░░ │
│ 🟠 HIGH 5 ██████████████░░ │
│ 🟡 MEDIUM 4 ██████████░░░░░░ │
│ 🔵 LOW 2 ████░░░░░░░░░░░░ │
└─────────────────────────────────────────────┘
Example Fix Prompt Output
# Remy Security & Bug Fix Prompt
You are an AI coding agent. Fix the following issues in this codebase.
Apply minimal, targeted changes. Preserve existing behavior and style.
## Findings
### [CRITICAL] Hardcoded production Stripe API key
**File:** `src/services/payments.py`, lines 12–14
**CWE:** CWE-798
**Issue:** A Stripe Live API key was found hardcoded in source code: `sk_l***0xyz`.
Committing secrets to version control is a critical security risk.
**Fix instructions:** Remove from source code immediately. Store in environment
variable: `STRIPE_SECRET_KEY = os.environ['STRIPE_SECRET_KEY']`. Rotate the key
in your Stripe Dashboard.
Configuration
Config is stored at ~/.remy/config.toml. API keys are stored in the OS keyring.
| Setting | Default | Description |
|---|---|---|
provider |
— | LLM provider (openrouter, groq, openai, anthropic, xai, nvidia_nim, ollama) |
model |
— | Model ID (e.g. gpt-4o, claude-sonnet-4-5) |
base_url |
provider default | Override base URL (for Ollama or self-hosted NIM) |
scan_defaults.deep |
false |
Enable LLM logic-bug pass by default |
scan_defaults.max_file_size_kb |
1000 |
Skip files larger than this |
scan_defaults.respect_gitignore |
true |
Honor .gitignore and .remyignore |
Run remy config show to see your current settings (key redacted).
Commands
remy # First run → wizard; subsequent → scan cwd
remy scan [PATH] # Full scan
remy scan --deep # SAST + LLM logic pass
remy scan --secrets-only # Secrets/credentials only
remy scan --api-surface # API route audit only
remy scan --bypass-check # Auth bypass detection only
remy scan --deps # Dependency CVE scan only
remy scan --format json # Machine-readable output
remy scan --output FILE # Write output to file
remy prompt # View last scan's Fix Prompt
remy prompt --copy # Copy Fix Prompt to clipboard
remy config # Run config wizard
remy config show # Print current config
remy config set-provider # Change provider/model
remy providers list # List all supported providers
remy version # Show version
Using as a CI Gate
Remy exits with code 2 when Critical or High findings are present, making it easy to use as a CI gate:
# .github/workflows/security.yml
- name: Remy security scan
run: remy scan . --secrets-only --format json --output scan.json
# Exits 2 if critical/high findings found
Roadmap
-
tree-sittermulti-language SAST (JS/TS, Go, Java, Rust, PHP, Ruby) - VS Code extension for inline findings
- SARIF output format for GitHub Security tab integration
- Custom rule packs via
~/.remy/rules/ - PR diff scanning (scan only changed files)
- HTML report output
- Jira/Linear issue creation from findings
Contributing
See CONTRIBUTING.md for setup instructions, how to add SAST rules, and how to add new providers.
License
Apache License 2.0 — see LICENSE.
Credits
Built by Medusa Security.
Maintained by Abhay Gupta (CTO, Medusa Security).
Metadata
Release files for remy-agent 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| remy_agent-0.1.1.tar.gz | 79.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| remy_agent-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.2 kB
Release files / remy_agent-0.1.1.tar.gz
| Download URL | remy_agent-0.1.1.tar.gz |
|---|---|
| Size | 79.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c809bca71294c5ccc1e7dd4a655e251c20bbeef1486b4cf8b71623732f15cab3
|
|
BLAKE2b-256 checksum How to use checksums |
11c19fc35551e96af0fca09d3b7ecbad739f070c96694a1aca301961520bf253
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / remy_agent-0.1.1-py3-none-any.whl
| Download URL | remy_agent-0.1.1-py3-none-any.whl |
|---|---|
| Size | 84.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e7a2d746a33da3746803724a1a83535847aaa82a13bd282f29d8320d62ceda2
|
|
BLAKE2b-256 checksum How to use checksums |
1a626bd04dc0b9576231fdb69f3ad7671018f88c6ad6b88389c67b4dc184c7a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for remy-agent 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.