f6d145669c
Adds VISION.md (target personas + 20-credential surface), docs/MARKET.md (competitive positioning), and docs/FINDINGS-2026-06-16.md (controlled-env test run: live cutover POCs for postgres/gitea/aws/mysql/redis/wireguard, the backup-gate defect + fix, and the MariaDB unprivileged-rotation gap). Swaps the placeholder _igo_options assets for the banner/icon set. Refreshes the project CLAUDE.md directive. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
144 lines
9.8 KiB
Markdown
144 lines
9.8 KiB
Markdown
# incredigo — Vision
|
|
|
|
## Catch vibe-coding security disasters before they happen.
|
|
|
|
You build an app in a weekend with Claude, OpenClaw, Hermes, Cursor. By Sunday night you've
|
|
accumulated three dozen credentials — an Anthropic key, a Stripe `sk_live`, a `DATABASE_URL`, a
|
|
GitHub PAT, an AWS access key, a Supabase `service_role` — each **generated once, pasted into a
|
|
`.env`, and forgotten.** Maybe it got committed. Maybe it's in your shell history. Maybe it's in
|
|
eight places. You'll "deal with security later."
|
|
|
|
**incredigo is the safety net for later-that-never-comes.** It finds every credential sprawled
|
|
across your machine, locks them in a RAM-only vault, takes a verified backup, **rotates the ones
|
|
a script can rotate**, and hands you a **guided, ranked checklist** for the ones that need a human
|
|
— all local-first: no cloud, no server, no SaaS, one binary. The forgotten `sk_live` gets rotated
|
|
*before* it becomes a breach disclosure.
|
|
|
|
> **One line:** *The local-first credential rotator that saves fast-moving AI-assisted builders
|
|
> from the security debt they're accumulating in real time.*
|
|
|
|
---
|
|
|
|
## The problem
|
|
|
|
The "vibe coder" — the AI-assisted builder who ships fast and worries about security after the
|
|
fact — is the fastest-growing developer cohort, and the one accruing credential risk fastest:
|
|
|
|
- **Secrets sprawl is exploding.** GitGuardian's *State of Secrets Sprawl 2026*: **29M new
|
|
hardcoded secrets in 2025, +34% YoY**, with each live secret appearing in **~8 locations on
|
|
the same machine** (`.env`, shell history, IDE configs, cached tokens, build artifacts).
|
|
- **Generate-once, rotate-never.** AI codegen mints keys on demand and pastes them inline. They
|
|
are rarely scoped, rarely rotated, often duplicated, and frequently committed.
|
|
- **No tool serves the cleanup.** Enterprise PAM/secrets platforms (CyberArk, Vault, Doppler)
|
|
rotate *what already lives in their hub*; they don't go discover the mess on your laptop. The
|
|
one consumer attempt at automating the long tail (Dashlane) gave up as "too brittle."
|
|
|
|
That gap — **discover the sprawl on this machine, then rotate it, self-custody, no cloud** — is
|
|
incredigo's reason to exist. (Full competitive analysis: [`docs/MARKET.md`](docs/MARKET.md).)
|
|
|
|
---
|
|
|
|
## Who this is for
|
|
|
|
**Primary — the security-literate-enough vibe coder.** OpenClaw / Hermes / Claude-Code / Cursor
|
|
builders who move fast and accumulate credentials across `.env`, `~/.aws`, `~/.netrc`, `~/.ssh`,
|
|
`~/.docker`, `~/.kube`, `docker-compose.yml`, plus a gopass store. They distrust (or can't legally
|
|
use) a SaaS secret hub, live on the CLI, and want **headless rotation in CI *and* an interactive
|
|
TUI**. Job-to-be-done: *"Find every credential I have, back them up, rotate what's automatable,
|
|
and give me a clean checklist for the rest — without anything leaving my machine."*
|
|
|
|
**Secondary — the non-technical password reuser.** People who never change their passwords, reuse
|
|
weak ones, and let the browser remember everything. The *same engine* (discover → back up →
|
|
rotate / guide), with a friendlier face: point it at the browser's saved-login store, and it
|
|
produces a ranked, deduplicated worklist with a direct **change-password link** per site — never a
|
|
plaintext password dump, never bypassing MFA. The bridge from "developer tool" to "anyone with a
|
|
password problem."
|
|
|
|
---
|
|
|
|
## The 20 credentials a vibe coder accumulates
|
|
|
|
The target surface. Each maps to how incredigo handles it: **[DB]** in-place database rotation
|
|
driver · **[API]** provider-API rotation driver · **[LOCAL]** self-generated secret incredigo can
|
|
regenerate + propagate · **[GUIDE]** no rotation API → guided worklist + change-URL (human in the
|
|
loop, never bypassing MFA/CAPTCHA).
|
|
|
|
| # | Credential | Where it lives | Why it bites vibe coders | Handling |
|
|
|---|---|---|---|---|
|
|
| 1 | **LLM API keys** (Anthropic, OpenAI, Gemini, Groq, OpenRouter, Mistral, HuggingFace) | `.env`, shell rc, `~/.config` | The defining vibe-coder key; minted constantly, pasted inline, billed by usage | GUIDE → API |
|
|
| 2 | **AI infra keys** (Pinecone/Qdrant/Weaviate, Replicate/Fal/ElevenLabs/Stability) | `.env` | Spun up per experiment, never cleaned up | GUIDE |
|
|
| 3 | **MCP / agent-gateway tokens** (OpenClaw/Hermes/Claude MCP server configs) | `~/.claude.json`, MCP config files | Grant broad tool/host access; rarely scoped or rotated | GUIDE / LOCAL |
|
|
| 4 | **AWS access keys** | `~/.aws/credentials`, `.env` | Long-lived, over-privileged, leak to GitHub constantly | **API (IAM)** |
|
|
| 5 | **GCP service-account JSON** | `~/.config/gcloud`, `.env` | Whole-key files copied around | API |
|
|
| 6 | **Cloudflare API token / global key** | `.env`, `~/.cloudflared` | Global key = account-wide; pasted into scripts | GUIDE / API |
|
|
| 7 | **Deploy-platform tokens** (Vercel, Netlify, Railway, Render, Fly.io) | `.env`, `~/.vercel` | One token = full deploy control | GUIDE / API |
|
|
| 8 | **Postgres DSN** | `.env` `DATABASE_URL`, `docker-compose.yml` | Default/weak passwords, reused across envs | **DB ✅** |
|
|
| 9 | **MySQL / MariaDB DSN** | same | same | DB |
|
|
| 10 | **Redis URL / password** | `.env`, compose | Often no password at all | DB |
|
|
| 11 | **Managed-DB keys** (Supabase `service_role`, Neon, PlanetScale, Mongo Atlas) | `.env` | `service_role` bypasses row-level security — catastrophic if leaked | GUIDE / API |
|
|
| 12 | **Git platform PATs** (GitHub, GitLab, Gitea, Bitbucket) | `~/.netrc`, `~/.config/gh`, git credential store | Broad-scope `repo` tokens; rarely expire | **API** |
|
|
| 13 | **Package-registry tokens** (npm `~/.npmrc`, PyPI, crates.io) | home configs | Publish rights → supply-chain risk | GUIDE |
|
|
| 14 | **Container-registry creds** (Docker Hub, GHCR) | `~/.docker/config.json` | Base64 "auth" mistaken for encryption | GUIDE |
|
|
| 15 | **CI/CD secrets** (GitHub Actions secrets, workflow env) | repo settings, `.github/workflows` | 59% of leaked-secret machines are CI runners | API / GUIDE |
|
|
| 16 | **SSH private keys / deploy keys** | `~/.ssh/id_*` | Unencrypted keys, shared deploy keys, never rotated | **driver: regen + `authorized_keys`** |
|
|
| 17 | **Kubeconfig tokens / client certs** | `~/.kube/config` | Cluster-admin creds in a dotfile | GUIDE |
|
|
| 18 | **Payment / auth / messaging keys** (Stripe `sk_live`, Clerk/Auth0/Firebase, Twilio, SendGrid/Resend, Slack/Discord, webhook signing secrets) | `.env` | Money + identity + spam blast radius | GUIDE / API |
|
|
| 19 | **App signing / session secrets** (Django `SECRET_KEY`, NextAuth secret, Rails `master.key`, JWT secrets) | `.env`, config | Self-generated randoms — easy to rotate, easy to forget | **LOCAL: regenerate + propagate** |
|
|
| 20 | **Browser-saved passwords + manager exports** | Chrome/Firefox login DB, CSV | Reused, weak, never changed (the secondary market) | **GUIDE: worklist + change-URL** |
|
|
|
|
This list is the **driver-ladder roadmap** and the **scanner roadmap** at once: every `[DB]`/`[API]`/
|
|
`[LOCAL]` row is a future one-file `Rotator`; every row is a discovery surface.
|
|
|
|
### Secondary-persona extension: network credentials (VPN + router)
|
|
|
|
The 20 above are the **primary (vibe-coder)** surface and remain the centre of gravity. Two
|
|
adjacent credential classes serve the **secondary persona** ("anyone with a password problem")
|
|
and are deliberately added — they reuse the same safe spine, not a new product:
|
|
|
|
- **VPN keys/credentials.** *Self-hosted WireGuard* rotates exactly like SSH (`[LOCAL]`:
|
|
regenerate the keypair in RAM, propagate the new public key to the peer, verify the handshake,
|
|
drop the old). *Mullvad* is the one mainstream consumer VPN with a real device-key rotation API
|
|
(`[API]`, account-number auth). Commercial account passwords (Nord/Express/Proton) have no
|
|
rotation API → `[GUIDE]`.
|
|
- **Router admin password.** *OpenWrt* (and other SSH/`ubus`-exposing prosumer firmware) is
|
|
programmatically rotatable (`[API/LOCAL]` via `uci`/`ubus`). Generic consumer routers
|
|
(TP-Link/Netgear/Asus web-UI) have no stable API → `[GUIDE]` / browser long-tail.
|
|
|
|
These stay within the non-goals below (self-owned only, never an attack tool, never bypass
|
|
MFA/CAPTCHA); they do **not** pull incredigo toward enterprise network/PAM management.
|
|
|
|
---
|
|
|
|
## How incredigo answers it
|
|
|
|
The same safe spine for every credential, automatable or not:
|
|
|
|
1. **Discover** — scan the machine's credential surface (`.env`, `~/.aws`, `~/.netrc`, `~/.ssh`,
|
|
`~/.docker`, `~/.kube`, git, `--path`, browser export).
|
|
2. **Custody** — load secrets into a RAM-only memguard vault (mlock/DONTDUMP); plaintext never
|
|
hits disk.
|
|
3. **Backup (mandatory)** — a sealed, **verified** snapshot before anything changes. No backup,
|
|
no rotation. Non-negotiable.
|
|
4. **Rotate** — drivers change the automatable ones in place (verify-new-before-revoke-old), and
|
|
close the blast radius by guiding consumer updates (`.env`, CI vars, k8s).
|
|
5. **Guide** — for the no-API long tail, emit a ranked, deduplicated worklist with per-site
|
|
change-password links; the human acts, MFA/CAPTCHA are never bypassed.
|
|
|
|
Headless for CI (`$INCREDIGO_PASSPHRASE`, no TTY) or interactive via the TUI. The PGP passphrase
|
|
is the single root of trust — back up the key, use a strong passphrase.
|
|
|
|
---
|
|
|
|
## Non-goals
|
|
|
|
- **Not enterprise PAM.** No fight with CyberArk/Vault/Delinea over machine-identity-at-scale,
|
|
compliance certifications, or a managed cloud service. (See `docs/MARKET.md`.)
|
|
- **Not a SaaS secret hub.** No server, no daemon, no telemetry, nothing leaves the machine.
|
|
- **Not an attack tool.** Self-owned accounts only, with the owner's authorization. Never resembles
|
|
credential stuffing or account takeover; never bypasses MFA/CAPTCHA — it hands off to the human.
|
|
- **Not "auto-change everything."** Fully-silent browser rotation is a known tar pit (Dashlane).
|
|
incredigo rotates what's scriptable and *guides* the rest.
|
|
|
|
See [`DESIGN.md`](DESIGN.md) for architecture + threat model and [`docs/MARKET.md`](docs/MARKET.md)
|
|
for the competitive landscape.
|