import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import api from "@/lib/api"; import { FlaskConical, ArrowRight, Sparkles } from "lucide-react"; export default function ExperimentsLibrary() { const [experiments, setExperiments] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { api.listExperiments() .then((d) => setExperiments(d.experiments || [])) .catch(() => {}) .finally(() => setLoading(false)); }, []); return (
/experiments

Pre-built experiments

Five precomputed trajectories with full activation captures, SAE drift, cross-step patch matrices, and a one-paragraph research finding. No GPU time required — load instantly.

{loading && (
loading…
)} {!loading && experiments.length === 0 && (
No experiments seeded yet.
Run python -m seed_experiments from /app/backend to populate this library.
)} {experiments.map((e) => (
{e.category}
{e.title}
                            {e.hypothesis}
                        
{e.finding ? (
finding {e.finding.slice(0, 220)}…
) : null}
n_steps {e.n_steps} · layer {e.sae_layer} open
))}
); }