● Zion Boggan zionboggan.com ↗

Add .env.example documenting configurable environment variables

The .gitignore already whitelists .env.example but the file was never
created. This documents the seven CYCLOPS_* / GH_TOKEN variables the engine
reads, each with its in-code default and the source file that consumes it,
so a fresh checkout on the forge or CT215 is self-describing. README now
points to it from the Operate section.
5076dec   Zion Boggan committed on Jul 3, 2026 (1 month ago)
.env.example +34 -0
@@ -0,0 +1,34 @@
+# Cyclops v2 environment configuration.
+#
+# Copy to .env and set only the values that differ from your box. Every variable
+# below has an in-code default (see the source line noted in each comment), so an
+# unset .env still runs with the forge defaults. .env is gitignored; this example
+# is the template.
+
+# Repo root. Defaults to the resolved repo directory, which is /opt/cyclops-v2 on
+# the forge engine box and /shared/projects/cyclops-v2 on CT215.
+# memory/memory.py, brain/brain.py, oracle/oracle.py, orchestrator/orchestrator.py
+CYCLOPS_HOME=/opt/cyclops-v2
+
+# venv interpreter used to shell out to the analysis tools.
+# brain/brain.py, orchestrator/orchestrator.py
+CYCLOPS_PY=/opt/cyclops-venv/bin/python
+
+# Static-analysis binaries. Override if installed elsewhere.
+# brain/brain.py
+CYCLOPS_SEMGREP=/opt/cyclops-venv/bin/semgrep
+CYCLOPS_JOERN=/opt/joern/joern-cli/joern
+
+# C compiler for the libFuzzer/ASan/UBSan oracle harness.
+# oracle/oracle.py
+CYCLOPS_CLANG=clang
+
+# Redis URL for the working-memory queue/cache. Redis is forge-local: bind to
+# localhost only, never the LAN (that is an impact family on our own gate).
+# memory/memory.py
+CYCLOPS_REDIS=redis://127.0.0.1:6379/3
+
+# Optional GitHub token for the fresh-target feed. Unauthenticated works but is
+# rate-limited; a token raises the release-polling rate limit.
+# orchestrator/feed.py
+GH_TOKEN=
README.md +3 -0
@@ -39,6 +39,9 @@ $PY orchestrator/orchestrator.py drain-oracle # route hypotheses to proof
$PY orchestrator/orchestrator.py status # graph + queues + GATED findings
```
+Configuration is via environment variables, each with an in-code default: copy
+`.env.example` to `.env` and set only the values that differ from your box.
+
The loop: **feed → brain (hypotheses) → oracle (proof) → gate (finding) → vault**.
Novelty by construction: hunt days-old code (`feed.py`), CPG finds unexplored
source→sink paths, sibling-CVE gate runs before deep work.