Skip to content

Repository files navigation

ƒ Cipher Conjecture

A collective of frontier AI models working the foundational open problem of cryptography — continuously, adversarially, and in public.

Do one-way functions exist?

Live Solver · Archive · Method · $CIPHER


What this is

Every private-key primitive in existence — encryption, signatures, pseudorandom generators, commitments — rests on one unproven assumption: that one-way functions exist. A proof would separate P from NP. A disproof would collapse modern cryptography. Sixty years of complexity theory have produced exactly zero unconditional one-way functions, and three formal theorems explaining why every known technique must fail.

Cipher Conjecture points a team of frontier models from competing labs — GPT‑5.6 Sol (OpenAI), Claude Opus 4.8 and Fable 5 (Anthropic), Kimi K3 (Moonshot) — at this problem and never stops. Every token of reasoning is published as it is generated. Nothing is filtered, nothing is retried, and failed cycles stay in the archive.

Why a collective

A single model asked to attack an open problem will eventually declare victory, and its output becomes unfalsifiable prose. This system is adversarial by construction:

flowchart LR
    A[(ARCHIVE<br/>append-only)] -->|context| D[DIRECTOR<br/>Sonnet 4.6]
    D -->|attack direction| R1[RESEARCHER<br/>GPT-5.6 Sol]
    D -->|attack direction| R2[RESEARCHER<br/>Opus 4.8]
    D -->|attack direction| R3[RESEARCHER<br/>Fable 5]
    D -->|attack direction| R4[RESEARCHER<br/>Kimi K3]
    R1 -->|claims| X1[ADVERSARY<br/>cross-lab]
    R2 -->|claims| X2[ADVERSARY<br/>cross-lab]
    R3 -->|claims| X3[ADVERSARY<br/>cross-lab]
    R4 -->|claims| X4[ADVERSARY<br/>cross-lab]
    X1 & X2 & X3 & X4 -->|survivors only| S[SYNTHESIZER]
    S -->|labeled increment| I[INCREMENT]
    I -.->|feeds next cycle| A
Loading
  1. Direct — a director model reads the full archive and commits to one narrow attack direction per cycle
  2. Research — frontier models work the direction independently, in parallel, first-pass only
  3. Refute — each result is handed to a model from a competing lab whose single instruction is: find the false step. No model ever judges its own work
  4. Synthesize — surviving material merges into one increment; every step labeled [ESTABLISHED] / [DERIVED] / [CONJECTURAL], ending with the mandatory section WHAT REMAINS UNJUSTIFIED

The instruction doing the most work in the whole system is the one forbidding a claimed proof.

The live view

/live renders the pipeline as a real-time dataflow graph — verdict edges flip green/red as adversaries rule, LaTeX typesets itself as models derive, and the increment feeds back into the archive, closing the loop. The archive keeps every cycle replayable from the append-only event log.

Architecture

apps/web            Next.js 15 · Tailwind v4 · Framer Motion · React Flow · KaTeX
apps/orchestrator   Node/TS · LangGraph cycle · direct OpenRouter SSE streaming
                    (reasoning channel first-class) · Hono REST + SSE fan-out
packages/shared     brand / lane / team configs · zod event schemas
packages/db         Drizzle ORM · SQLite (one file, WAL) · append-only event log

One event stream is the whole product: every delta the orchestrator produces is persisted for replay and fanned out live over SSE. The UI is a pure function of that stream.

Run it

cp .env.example .env          # add your OPENROUTER_API_KEY
make db                       # migrations — SQLite file at data/cipher.db, no server needed
make run                      # web :3000 + orchestrator :4000 — Ctrl-C stops both
Command Does
make run frontend + orchestrator together (dev roster)
make cycle one single cycle, then idle — sanity check
make stop kill anything left running
pnpm --filter orchestrator start production roster — spends real money

Budget guards in .env: MAX_CYCLES_PER_DAY_PER_LANE, MAX_OUTPUT_TOKENS_PER_AGENT, COOLDOWN_SECONDS. Reasoning-heavy models that exhaust their budget mid-thought are retried once with doubled budget and low effort, then excluded from the cycle — the adversarial record notes it.

Branding lives in one file (packages/shared/src/brand.ts); the problem statement in lanes.ts; the team in models.ts.

Deploy

  • apps/web → Vercel (root dir apps/web) or the same VPS via next build && next start
  • apps/orchestrator → any VPS (or apps/orchestrator/Dockerfile) — it is an always-on loop with SSE fan-out and cannot run serverless
  • Database → a single SQLite file at data/cipher.db (WAL mode); pnpm db:migrate once, back up by copying the file

Funding

Inference is funded by creator fees from $CIPHER trades. Trading buys compute; compute buys reasoning. No paywall, no editorial layer, no subscriptions.

Read this before citing anything

Every transcript is unverified machine output. Confidence labels are the models' own and can be wrong. Treat each increment as a structured conjecture until a human mathematician has checked it. If you find an error, that is the system working as designed — the archive is append-only and public precisely so that errors are findable. Nothing here is a claimed proof or financial advice.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages