Add a re-runnable interactive wizard that configures an AI provider for the ideation layer: Claude, OpenAI, Gemini, or a local Ollama. Keys persist to ~/.config/nadezhda/credentials (0600, atomic temp+rename) and auto-load on every run; a shell-exported key always wins over the file. A key-name allowlist (NADEZHDA_* / *_API_KEY) blocks env-name injection into spawned subprocesses. The Ollama path detects a running instance and auto-configures it, else writes an embedded compose file plus one docker command, else prints an install hint. Ollama's host port is remapped to a non-default 39847 (OLLAMA_HOST_PORT) to avoid colliding with an existing Ollama on 11434; the container-internal port stays 11434. Thread a signal-cancellable root context through cobra (ExecuteContext). Default the Anthropic model to claude-sonnet-4-6. |
||
|---|---|---|
| .. | ||
| cmd/nadezhda | ||
| internal | ||
| testdata | ||
| .gitignore | ||
| README.md | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
README.md
Nadezhda
A concurrent security-news and CVE aggregation engine, written in Go.
Nadezhda ingests cybersecurity news from reliable RSS feeds, enriches every referenced CVE with authoritative exploit intelligence (NVD, CISA KEV, FIRST EPSS), clusters the same story across outlets, ranks items by real-world significance, and surfaces content angles. It ships as a single static binary with a local SQLite store, a colorful terminal UI, and Markdown/JSON export.
Status
Early development. The scaffold is in place: configuration, source registry, SQLite store with forward-only migrations, and the command skeleton.
nadezhda version # print version
nadezhda sources # list configured feeds and persist them to the store
Ingestion, CVE enrichment, ranking, the TUI, and the AI ideation layer land in subsequent milestones.
Build
just build # -> ./nadezhda
just test
Requires Go 1.25+.
Full documentation lands in learn/ as the project matures.