Loop
Loop is an open-source web app that keeps agent skills current: it tracks the sources each skill depends on, refreshes the skill with a research agent on a schedule, and saves every change as an immutable version with a diff.
Facts
- Site: https://loooop.dev. On 2026-10-30 a signed-out request to
/returned 307 to/home, and/homeand/faqreturned 200 (/homefrom a stale ISR cache entry).www.loooop.devand the oldloooooop.vercel.appreturn 308 to loooop.dev. The tagline is "Skills that never go stale". Source: curl -sI, 2026-10-30; middleware.ts; README.md - No kevinliu.studio alias.
loop.kevinliu.studioresolves through the kevinliu.studio wildcard DNS record, but no Vercel project serves it and the TLS handshake still failed on 2026-11-03. The repo references only loooop.dev. Source: curl and dig, 2026-10-30; curl, 2026-11-03; grep of ~/repos/Loop - Data routes: on 2026-11-03
/api/skills/frontend-frontier/rawreturned 200 in about 2 s with version v124, updated 2026-11-03 at 09:02 UTC by the daily refresh./api/skills/raw/allreturned 200 in about 3 s, and/skills/frontend-frontierreturned the skill page in under 1 s. On 2026-10-30 the same routes had returned 500 or timed out after about 90 s. No commit landed in between, so the failure was not fixed in code. Source: curl, 2026-10-30 and 2026-11-03; git log origin/main, 2026-11-03 - Repo: https://github.com/Kevin-Liu-01/Loop, public, TypeScript, 18 stars, 3 forks. It was pinned on Kevin's profile in the 2026-07-01 snapshot. The GitHub homepage field still says loooooop.vercel.app. Source: gh repo view, 2026-10-30; raw/github/kevin-pinned-repos-2026-07-01.json
- License: MIT, added 2026-06-15. Source: commit
c5a62a5; gh repo view - Stack: Next.js 16, React 19, TypeScript, Tailwind 4, Supabase Postgres, Clerk, Stripe, AI SDK 5 with Vercel AI Gateway,
@vercel/queue,@vercel/sandbox,@vercel/blob, Vercel Analytics and Speed Insights, Resend email, Brave Search API. The landing uses Three.js, GSAP, Lenis and motion. Lint and format run through Ultracite (oxlint and oxfmt). Source: package.json; README.md - Hosting: Vercel project
loop, with two crons: a refresh at 09:00 UTC daily and an import at 09:00 UTC on Mondays. The refresh worker is aqueue/v2betatrigger on theskill-refreshtopic. Source: .vercel/project.json; vercel.json - History: first commit 2026-03-28 ("feat: bootstrap loop app"), last commit on main 2026-10-16, 159 commits on origin/main. 149 of them landed by 2026-04-30. Public launch 2026-04-27. Source: git log, 2026-10-30
- Status: live, and the daily refresh is running: the data API answered on 2026-11-03. The ten commits after April are UI and SEO fixes, the license, performance, cost, analytics and icons. Source: git log; curl, 2026-11-03
What it does
Loop treats a skill as a living document. A user attaches sources (docs, changelogs, repos, release notes, RSS and Atom feeds) and a cadence. A research agent scans those sources, decides what changed, and writes a new immutable version with a before and after diff. There are no silent overwrites. Source: loooop.dev, 2026-04-27; README.md The README states the thesis: "agent skills should improve while you sleep, not decay while you forget." Source: README.md
Any agent can fetch the current version from a raw endpoint such as https://loooop.dev/api/skills/frontend-frontier/raw. ?v=N pins a version and /api/skills/raw/all lists every public skill and MCP server. Source: public/llms.txt
File-backed skills matter because coding agents can edit them with normal repo mechanics: inspect, patch, diff, validate and commit. The catalog is an editable source tree, not a prompt database. Source: X/@zachlloydtweets reply, 2026-06-17
The README lists four jobs: Source: README.md; lib/faq-data.ts, 2026-06-18
- A catalog of source-backed skills to browse, track, import, fork or write. Each user can create up to 10.
- Scheduled refreshes that save each pass as a new version. Free accounts get 3 automations.
- An inspectable run for every refresh: source scans, search traces, summaries, logs and diffs.
- An agent sandbox and Agent Studio. The user picks a provider and model (AI Gateway, OpenAI, OpenRouter, Groq, Together AI or Ollama), attaches skills and MCP servers, reviews the assembled context, and runs Node or Python in a Vercel Sandbox.
Loop also keeps an MCP catalog of 70+ servers (http and stdio servers can execute) and a publisher path: five verified provider authors (Anthropic, OpenAI, Cursor Directory, Awesome Agent Skills, Awesome MCP Servers), brand icons, public, member or private visibility, per-skill agent docs (AGENTS.md, cursor.md, claude.md, codex.md), and Stripe Connect payouts. Source: lib/faq-data.ts
Refresh pipeline. The daily cron at GET /api/refresh only decides which skills are due and enqueues one @vercel/queue message per skill. The worker at POST /api/refresh/skill loads tracked sources, fetches signals, searches the web with Brave Search by default (Firecrawl, Serper, Tavily and Jina are optional user keys), fetches pages as Markdown, revises the skill body, saves a version and stores the run log. The step budget scales with the source count and search budget and reserves 5 steps for the revision. Retries back off, and repeated failures are counted on the skill. Source: README.md
Weekly import. Every Monday the import cron scans five built-in sources. Anthropic Skills, OpenAI Skills and Cursor Directory are read as canonical skill folders. Awesome Agent Skills and Awesome MCP Servers are lead lists: Loop follows their GitHub links and imports repos that contain a SKILL.md. The default limit is 10 imports per run. Each import carries an official or community trust tier, and admins get a digest email through Resend. Operator users can add their own GitHub repos as sources. Source: lib/faq-data.ts; lib/weekly-import.ts
Data model. Supabase is the only store in production, with row-level security on every table: skills (body, metadata, sources, automation and updates JSONB), skill_versions, categories, mcps, briefs, loop_runs and usage_events. The schema has 23 migrations. A source is one of rss, atom, docs, blog, github or watchlist. An update stores the summary, what changed, experiments, source items, changed sections, the editor model and whether the body changed. Every saved revision gets a stable URL such as /skills/frontend-frontier/v4. Skill origins are user and remote in production. repo and codex (from ~/.codex/skills) are dev-only and lose to user skills on a slug clash. Clerk handles auth, and billing IDs live on the Clerk user. Automations run daily, weekly or manually and show on a calendar at /settings/automations. Usage events record page views, copies, searches, skill actions, agent runs and API calls, shown at /settings/health. Source: README.md; supabase/migrations
Models. Automations always go through AI Gateway (createGateway from the ai package). Each sandbox session runs in its own Sandbox.create VM. The default editor model is openai/gpt-6-luna, set by LOOP_MODEL. Operator users can pick GPT-6.1 Sol, GPT-6 Luna, Claude Sonnet 5.5 or Claude Haiku 5.5 per automation, using IDs from AI Gateway's live model list. Source: Kevin-Liu-01/Loop#6, merged 2026-11-04, commit 9b157a5; lib/agents.ts, components/automation-edit-modal.tsx and lib/faq-data.ts on origin/main, checked 2026-11-04 Claude Models and OpenAI Models cover the lineups.
Tiers. Free: browse, 10 skills, 3 automations, the sandbox. Operator, $5 a month: unlimited automations, cadence and model choice, custom import sources, marketplace pricing, Stripe Connect payouts and priority support. Source: lib/faq-data.ts; public/llms.txt
Launch record
Loop launched on 2026-04-27, and the X release post went out on 2026-04-28: "Releasing Loop! An open-source operator desk for agent skills." By 2026-07-12 it had 11 likes, 1 repost, 2 replies and 4 bookmarks. The planned order was X, then LinkedIn, then four subreddits a day apart (r/ChatGPTCoding, r/LocalLLaMA, r/SideProject, then r/nextjs after 1 to 2 weeks). The X, LinkedIn and Reddit drafts live in private page. Source: X/@kevskgs, 2026-04-28 Source: raw/x-bookmarks/enriched/2049232663215775953.json Source: private page, 2026-04-27
The launch screenshots show the "Skills that never go stale" hero with diff cards, a catalog of 111 skills with 45 tracked, category tabs (A2A, Containers, Frontend, Infra, Ops, Security, SEO+GEO, Social Systems) and an automation calendar. A skill page shows version history, automation state, the raw endpoint and tabs for Studio, Content, Agent docs, Activity, Automations, Research and Sources. A run log shows success in 139.5 s, 11 sources, 94 signals, 20 steps, completion 11/11, and a revise_skill call with its diff. Source: local launch image review, 2026-07-03
The launch catalog, with the MCP catalog then at 10 servers (AWS API, Brave Search, Cloudflare, Context7, Docker, Exa, Fetch, Figma, Filesystem, Firecrawl): Source: loooop.dev, 2026-04-27
| Skill | Category | Version | Sources |
|---|---|---|---|
| Frontend Frontier | Frontend | v18 | 11 |
| Next.js Patterns | Frontend | v20 | 9 |
| Lighthouse Web Performance | Frontend | v15 | 15 |
| OpenAI Agent Orchestration | A2A | v17 | 17 |
| Tool Use & Function Calling | A2A | v15 | 20 |
| OpenAI Prompt Engineering | A2A | v15 | 19 |
| Anthropic MCP Development | A2A | v15 | 8 |
| Google SEO & GEO | SEO + GEO | v16 | 16 |
| OWASP Security Best Practices | Security | v16 | 11 |
| GStack | Frontend | v1 | 1 |
By June the README reported 100+ verified skills, many at v16 to v21 after weeks of daily refreshes. Source: README.md, 2026-06-18
Kevin's decisions and rules
Why he built it: he kept a personal wiki of 200+ pages with 14 automations keeping skills current, and wanted that workflow as a product for other people building with agents. The hard part was the refresh pipeline: scan sources, summarize change and decide whether the skill body needs an update, without drift. He said it taught him about agent reliability, versioning and feedback loops that compound. private page The direct trigger was Codex automations that needed Codex left open on a Mac and kept failing on stale refresh tokens. Source: README.md
The README's shipping beliefs, which put Build, Don't Buy into practice: Source: loop/README.md "Shipping beliefs", 2026-06-13
- Automations run unattended. A system that needs a laptop, a pinned app or routine rescue is not automation.
- Product logic gets custom code. Infrastructure plumbing is rented whenever possible.
- Every refresh is inspectable. Sources, search traces, summaries, diffs and version history are product surfaces.
- Managed primitives are a feature when they free time for the refresh pipeline, editor agent, diff viewer and scheduler.
Other recorded decisions:
- Loop is Vercel-native on purpose: one AI Gateway key across OpenAI, Anthropic, Gemini, OpenRouter, Groq and Together; queue fan-out instead of one long cron; Firecracker microVMs from Vercel Sandbox. Source: README.md
- Cron is an orchestrator, never a worker. Source: README.md; lib/faq-data.ts
- Versions are immutable. Historical versions are audit records, not landing pages: an unpushed local commit points their canonical URL at the latest version and marks them
noindex,follow. Source: README.md; local commit8282654, 2026-09-14 - Loop is Open Core: the desk is open source and Operator is the paid tier. Source: loop/README.md, 2026-06-13
- Social previews use a versioned image path (now
/og-v3.png) rewritten to the/ogrenderer.robots.tsnames Twitterbot explicitly, and a changed image gets a new URL. Source: AGENTS.md; next.config.ts - Code review in this repo follows Kevin's plan-mode prompt in AGENTS.md: aggressive DRY, more tests rather than fewer, "engineered enough", explicit over clever, and ask before picking a direction. Source: AGENTS.md
- The July 2026 whiteboard set a goal of driving idle Supabase and Vercel spend toward zero. On 2026-10-08 Loop drew about 95% of the Vercel team's ISR-write charges for the cycle, and PR #2 raised the home, landing and sitemap revalidation from 5 minutes to 1 hour. Source: private July 2026 workflow whiteboard; ~/repos/outputs/cost-domain-20261008/recovered-conversation.md; commit
2e69917 - Public pages load GA4 with Consent Mode v2 defaults. The signed-in library, settings, sandbox and auth pages never load it. Source: commit
63766fb, 2026-10-16 - Loop keeps its own domain. On 2026-10-08, while moving Local Search and Sigil onto kevinliu.studio, Kevin listed loooop.dev among the domains he is keeping. Source: ~/repos/outputs/cost-domain-20261008/recovered-conversation.md
- The name came from a friend, whom the README credits. Source: loop/README.md, 2026-06-13
Fieldwork direction. The July 2026 whiteboard places Fieldwork beside Loop as a possible next operator surface: a stateful visual-feedback editor that keeps site state, conversation and version history, DOM or region selection, screenshots, typed drawing layers and pen tools, inspiration, and token and color controls in one loop. private page supplies execution and Sigil UI supplies design constraints. Whether Loop owns the editor or Fieldwork stands alone is still open. Full source: private page. Source: private July 2026 workflow whiteboard; private Discord message 1527032191513792674, 2026-07-15
Working state
- Repo:
~/repos/Loop. Localmainhas diverged from origin/main. It holds three unpushed commits from 2026-09-14 (version-page caching for a day, tag-based cache invalidation, archival version canonicals) and lacks three remote commits (the ISR change merged 2026-10-14, the 2026-10-16 GA4 change and the 2026-10-16 icons). Branchcodex/reduce-isr-write-costsmerged as PR #2 (2e69917) and is still checked out in~/repos/outputs/cost-domain-20261008/Loop. No PRs are open. Source: git log, git worktree list and git cherry, 2026-10-30; gh api pulls, 2026-10-30 - Agent guides:
AGENTS.md(plan-mode review prompt, Ultracite rules, social preview rules),.claude/CLAUDE.md(Ultracite rules) and.cursor/rules/frontend-10x-*.mdc. Source: repo files - Config: environment variable names are in
.env.templateand the README. The cron schedule is invercel.json. Source: README.md - Checks:
pnpm testruns 37 test files on origin/main with the Node test runner.pnpm typecheckandpnpm checkcover types and lint. Source: package.json; test/ - Memory and records: the Claude memory
vercel-personal-team-cost-drivers(2026-09-15, in a scratch-workspace project folder) holds the 2026-09 cost review.~/repos/outputs/cost-domain-20261008/holds the 2026-10-08 cost and domain audit. No RESUME or handoff file mentions Loop. Source: search of ~/.claude/projects//memory and ~/gt/RESUME.md, 2026-10-30
Related projects
- Kevin-Wiki: Loop turned the wiki's skill-refresh automations into a product. private page
- Local Search CLI: Loop's refresh worker uses the hosted Brave Search API, the kind of keyed API
lsearchreplaces with a local browser. Both got GA4 on 2026-10-16. Source: README.md; git log of each repo - private page: Kevin's shared project domain, which Loop does not use. See the domain decision above. Source: ~/repos/outputs/cost-domain-20261008/audit.md
- PortfolioMon Showdown: on 2026-10-30 Kevin put Loop in the 18-project roster of "my kevinliu.studio domain projects" for the portfolio redesign. The portfolio links Loop at loooop.dev. Source: Claude memory portfolio-redesign-bar, 2026-10-30; PortfolioMon-Showdown public/llms.txt
- private page: Kevin's Stripe accounts, Loop's included, share one legal entity's business details, so bday.land changes only its own account's public details. Source: the birthday sites Claude memory note, 2026-10-14
- private page, Sigil UI and Fieldwork — Visual Design IDE share the July 2026 Agent OS plan. Source: private page
- Loop App Origin tells the origin story. Project Inventory Ledger lists Loop as portfolio card 4. Source: Project Inventory Ledger
Open items
- The data routes failed on 2026-10-30 while cached public pages still served. The cause is not confirmed from outside. The Supabase project and the daily refresh and Monday import cron runs need a check in their dashboards. Source: curl, 2026-10-30
- Local
mainhas three unpushed commits from 2026-09-14 (77b2290,73a324a,8282654); it needs Kevin's decision on them before it can fast-forward. Source: git grep of origin/main; git log, 2026-10-30 - Kevin called Loop one of his kevinliu.studio domain projects on 2026-10-30, but it has no kevinliu.studio hostname. Source: Claude memory portfolio-redesign-bar; curl, 2026-10-30
- The GitHub homepage field points at loooooop.vercel.app instead of loooop.dev. Source: gh repo view, 2026-10-30
- The Loop and Fieldwork boundary is undecided. Source: private page
Timeline
- 2026-11-04 | Loop#6 replaced the model menu with GPT-6.1 Sol, GPT-6 Luna, Claude Sonnet 5.5 and Claude Haiku 5.5, and made GPT-6 Luna the default. Source: Kevin-Liu-01/Loop#6, commit 9b157a5
- 2026-11-03 | Flagged the retired and deprecated models in Loop: the retired Claude Sonnet 4 and Claude Haiku 3.5 menu entries, the default
openai/gpt-5-mini(shuts down 2026-12-11) and the GPT-4o and GPT-4o Mini entries (shut down 2027-01-14). Source: lib/agents.ts; lib/faq-data.ts; components/automation-edit-modal.tsx; Anthropic and OpenAI deprecation pages, checked 2026-11-03 - 2026-11-03 | The data routes answered 200 in 2 to 3 s and the refresh had updated frontend-frontier to v124 that morning, with no commit since 2026-10-16. Source: curl and git log, 2026-11-03
- 2026-10-30 | Rewrote the page from the repo, gh metadata, memories and live checks. Loop has 159 commits on origin/main (first 2026-03-28, last 2026-10-16), 18 stars and 3 forks. loooop.dev serves 200 at
/home, but/api/skills/frontend-frontier/rawreturned 500 after 90 s,/api/skills/raw/alltimed out, and a skill page streamed a not-found body after 91 s. Loop has no kevinliu.studio hostname. Added the Monday weekly-import cron, the five import sources and the local/remote branch divergence. Source: git log; gh repo view; curl, 2026-10-30 - 2026-10-16 | Added GA4 on public pages with Consent Mode v2 defaults, plus apple-touch and PNG manifest icons and a raster JSON-LD logo. Source: commits
63766fb,b81262a - 2026-10-08 | During the Vercel cost and domain audit, Loop drew about 95% of the cycle's ISR-write charges. PR #2 raised the home, landing and sitemap revalidation from 300 s to 3,600 s and removed changing sitemap timestamps; it merged on 2026-10-14. Kevin kept loooop.dev while moving other projects to kevinliu.studio. Source: commit
2e69917; gh api pulls/2; ~/repos/outputs/cost-domain-20261008/audit.md and recovered-conversation.md - 2026-09-14 | Made three local commits that were never pushed: cache pinned version pages for a day, invalidate detail caches by tag, and canonicalize historical versions to the latest with
noindex,follow. They followed a 2026-09 cost review. Source: local commits77b2290,73a324a,8282654; Claude memory vercel-personal-team-cost-drivers - 2026-07-27 | Shipped performance work, social preview fixes, restored library navigation and refined landing motion. Source: commits
4ed5350,54a9069,2d60ed7 - 2026-07-16 | Renamed the Design IDE direction to Fieldwork and added typed annotation layers and multiple pen tools while preserving Loop's unresolved operator-shell boundary. Source: Private Discord message
1527032191513792674, 2026-07-15 - 2026-07-14 | Added the Design IDE direction and project boundary: Loop is a candidate operator shell, Agent Machines supplies execution, Sigil supplies constraints, and the editor must preserve DOM context, visual evidence, conversation history, and versioned outputs. Also recorded the goal of reducing idle Supabase and Vercel costs toward zero. private page
- 2026-07-04 | Added file-native skill editability as product rationale: coding agents can update skill files through ordinary repo workflows. Source: X/@zachlloydtweets reply, 2026-06-17
- 2026-07-03 | Deep-reviewed the public X launch artifact set and refreshed current GitHub/site status. Added launch hero, catalog, skill detail/raw endpoint, and refresh run-log evidence to the project page. Source: X/@kevskgs, 2026-04-28
- 2026-07-03 | GitHub signal: pinned public TypeScript repo, MIT license, 13 stars, 2 forks; default branch
mainatc5a62a5ae0805ed71218703f22e1589f6145fb7c; no public tags returned bygit ls-remote; https://loooop.dev returned 200. (Moved here from the page header on 2026-10-30.) Source: GitHub API,git ls-remote,curl -I, 2026-07-03 - 2026-06-25 | Added current GitHub/pinned/deployment evidence for portfolio routing. Source: raw/github/kevin-repos-2026-06-25.json; raw/github/kevin-pinned-repos-2026-06-25.json; raw/github/deployment-check-2026-06-25.tsv
- 2026-06-18 | Re-synced current README/FAQ facts: Loop now describes itself as an operator desk for source-backed skills; catalog has 100+ verified skills with many at v16-v21; refresh is Brave-first with optional Firecrawl/Serper/Tavily/Jina; cron only dispatches
@vercel/queuejobs; FAQ describes 70+ MCP servers, Operator pricing/features, verified authors, and Vercel Sandbox agent studio. Source: loop README + loop/lib/faq-data.ts, 2026-06-18 - 2026-06-17 | Referenced in Vercel Eve and ZCode — new agent-framework / coding-agent entrants (GLM-5.2-powered ZCode; Vercel's filesystem-first eve) to compare against loop's skills/MCP catalog. private page
- 2026-06-15 | Added the MIT license. Source: commit
c5a62a5 - 2026-06-13 | Added Shipping Beliefs section from the repo README (unattended automation, build the product logic + rent the plumbing, inspectable refreshes, managed primitives as a feature) and linked it to Build, Don't Buy as Kevin's dogfooding proof. Normalized repo URL casing (
/Loop→/loop), credited the friend who suggested the name, and cross-linked AI SDK HarnessAgent. Source: loop/README.md, 2026-06-13 - 2026-05-31 | Architecture re-synced from the repo README: the cron is now an orchestrator only -
@vercel/queuefans out one worker per skill (POST /api/refresh/skill). Research default switched to Brave Search + page fetch (Firecrawl/Serper/Tavily/Jina optional per user). Added an Operator tier ($5/mo): unlimited automations, model pick, Stripe Connect marketplace payouts. Catalog reached 100+ verified skills (v16–v21) after weeks of autonomous refresh; dynamic step budget reserves 5 steps for revision. Stack leans on Vercel primitives (AI Gateway, Queue, Sandbox, Blob, Cron). Source: loop/README.md + loop/lib/faq-data.ts, 2026-05-31 - 2026-05-11 | Documented shared agent/CSS enforcement stack with wiki brain: CSS UI Enforcement, Lean Ctx bootstrap for Cursor sessions touching Loop. private page
- 2026-05-05 | Merged PR #1: middleware had been returning 404 for the public raw-skill reads documented in
llms.txt, so the fix unblocked them, dropped auth pages from the sitemap and addednoindex. Source: gh api pulls/1; middleware.ts comment - 2026-04-29 | Automation system fixes: forked skills can now be unpaused, automations can be edited post-creation, forking duplicates automation config.
maxDurationexport added to refresh route to prevent Vercel cron timeout. Vercel Analytics integrated. Source: Cursor transcript, 2026-04-29 - 2026-04-28 | Public X release post shipped: Loop framed as an open-source operator desk for agent skills that tracks source dependencies and auto-refreshes playbooks with versioned diffs. Source: X/@kevskgs, 2026-04-28
- 2026-04-28 | Twitter OpenGraph and OG images fixed for Discord and other platforms. Domain purchased: ptd.quest (cross-project). Google Search Console homepage URL ownership verification resolved for loooop.dev. Source: Cursor transcript, 2026-04-28
- 2026-04-27 | Public launch. Free and open source at loooop.dev. Catalog ships with 10+ actively-refreshed skills across Frontend, A2A, Security, and SEO categories. MCP catalog with 10 servers. FAQ added ("why does loop have 4 o's"). MCP pages built for browsing imported servers. private page
- 2026-04-27 | Landing page built with real skill/MCP data and actual automation schedule. Shader effects (Plasma, Dither, WaveDistortion) explored for hero section. Logo redesigned using golden ratio. Source: Cursor transcript, 2026-04-27
- 2026-04-13 | Project page created. Core architecture defined: Supabase + Clerk + Stripe + Vercel AI SDK + Firecrawl. private page
- 2026-04-06 | Early development: sandbox UI completely redesigned. Modals improved and aligned with aesthetic. Icons expanded throughout app. 404 page created. Free search alternatives explored to replace Firecrawl (user ran out of credits) - users can now add their own API keys for paid search tools. Source: Cursor transcript, 2026-04-06
- 2026-04-05 | Initial build sessions. Supabase and Clerk API keys configured. Dev server running. Source: Cursor transcript, 2026-04-05
- 2026-03-28 | First commit: "feat: bootstrap loop app". Source: commit
a6fd4f6