CL8Y ecosystem research worker: weekly blog drafts, source ingest, and vector search (Rust + Postgres).
  • Rust 99.7%
  • Makefile 0.3%
Find a file
2026-09-02 14:12:58 +00:00
.cursor/skills Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
docs Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
fixtures Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
gaps Add codebase gap analysis for the weekly research worker. 2026-08-31 18:04:17 +09:00
migrations Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
skills Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
src Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
tests Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
.env.example Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
.gitignore Bootstrap cl8y-research as the dedicated CL8Y research worker repo. 2026-08-31 13:14:03 +09:00
.gitlab-ci.yml Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
AGENTS.md Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
Cargo.lock Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
Cargo.toml Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
CODEOWNERS Add CODEOWNERS for org code maintainers. 2026-09-02 14:12:58 +00:00
docker-compose.yml Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
LICENSE Bootstrap cl8y-research as the dedicated CL8Y research worker repo. 2026-08-31 13:14:03 +09:00
Makefile Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00
README.md Implement the weekly blog worker and vector search in Rust. 2026-08-31 13:45:33 +09:00

cl8y-research

Dedicated Rust + Postgres worker for CL8Y ecosystem research.

This repo exists so CL8Y-web can stay a static Vite SPA. Telegram sessions, indexer tokens, GitHub/GitLab tokens, and Replicate spend live here. Draft MDX is copied into CL8Y-web by a human-reviewed MR. Nothing in this worker pushes CL8Y-web main or auto-merges.

Implements cl8y-research#1 (moved from CL8Y-web#4).

Why a new repo

CL8Y-web prerenders /, /blog, and /blog/:slug. It has no worker process and must not hold long-lived secrets. A sibling package inside that SPA would still tempt agents to import it at build time. Isolation is the default.

Canonical voice and hero-image contract remains:

  • CL8Y-web/blog_gen/SKILL.md
  • CL8Y-web/blog_gen/generate_image.py (one predictions.create per command, poll by id)

This worker consumes that contract. It does not rewrite homepage IA, CL8Y_WHITEPAPER.md, or RETIRED_HOMEPAGE_MODULES.

One week

Fixture path (no live tokens):

cargo test
cargo run -- week --fixtures fixtures/happy-week --out runs/latest --dry-run
cargo run -- week --fixtures fixtures/happy-week --out runs/latest

--dry-run is collect → plan only (scheduler / CI schedule). A full run writes:

Artifact Role
sources.json Collected records + gaps + timestamped numeric citations
plan.json Topic, style, slug, rejected clones, cited recent posts
outline.md Outline
passes/*.md Named editor-pass artifacts (one Replicate create for the bundle)
post.mdx Blog contract MDX (no authored wordCount)
report.md Gaps, create count, prediction ids
publish-mr.md Copy instructions; no auto-merge

Pipeline order is enforced: collect → plan → outline → draft → editor → emit. Skipping a step fails.

Agents query ingested sources without treating Telegram as onchain fact:

cargo run -- search "dex volume" --fixtures fixtures/happy-week

Production persistence is Postgres + pgvector (docker compose up -d, DATABASE_URL, cargo run --features postgres -- migrate). Tests use an in-memory store and a hashing embedder so CI needs no model API.

Live Replicate

Export REPLICATE_API_TOKEN and pass --live. One predictions.create per step. Never retry create. If the proxy drops after accept, recover with cl8y-research fetch PREDICTION_ID. Weekly create budget defaults to 6 (REPLICATE_WEEKLY_CREATE_BUDGET).

Telegram

Official Bot API as a member of t.me/plasticann and t.me/ceramicliberty only. Do not scrape public web previews. Session files are 0600. CI uses fixtures. Retention is 14 days. Non-team identities are redacted. Chat is theme/sentiment, not an onchain citation.

Indexers

  • DEX: allowlisted https://indexer.dex.cl8y.com/api/v1/overview (documented).
  • Bridge: no documented public HTTP indexer in cl8y-bridge-monorepo at the time of this worker. The collector records a gap and skips the stat rather than inventing an API. See docs/bridge-indexer-gap.md.

No HTML scrape of dex.cl8y.com / bridge.cl8y.com. Host allowlist only (SSRF-closed).

Docs

License: AGPL-3.0-only (same as CL8Y-web).