[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93185":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":15,"starSnapshotCount":15,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},93185,"loopany-platform","superdesigndev\u002Floopany-platform","superdesigndev","Run your company in loops, Loop Anything","https:\u002F\u002Floopany.ai\u002F",null,"TypeScript",74,7,53,0,21,44.81,"Other",false,"main",true,[],"2026-07-22 04:02:08","\u003Cdiv align=\"center\">\n\n\u003Cimg alt=\"Loopany\" src=\"docs\u002Fassets\u002Flogo.svg\" width=\"50\">\n\n# Loopany\n\n**Scheduled agent loops. Keep the system under control.**\n\nDescribe a recurring task once. Loopany runs it on a schedule with **your own machine's coding agent**, and surfaces every result on a shared dashboard and your team's notification channel.\n\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@crewlet\u002Floopany)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@crewlet\u002Floopany)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fsuperdesigndev\u002Floopany-platform?style=flat)](https:\u002F\u002Fgithub.com\u002Fsuperdesigndev\u002Floopany-platform\u002Fstargazers)\n[![Deploy](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fsuperdesigndev\u002Floopany-platform\u002Fdeploy.yml?label=deploy)](https:\u002F\u002Fgithub.com\u002Fsuperdesigndev\u002Floopany-platform\u002Factions\u002Fworkflows\u002Fdeploy.yml)\n\n[Website](https:\u002F\u002Floopany.ai) · [npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@crewlet\u002Floopany) · [Contributing](CONTRIBUTING.md) · [Architecture](AGENTS.md)\n\n\u003C\u002Fdiv>\n\n## What is Loopany?\n\nLoopany is infrastructure for **recurring agent work**. You describe a loop - a daily health check, a weekly research digest, a closed goal like \"follow up until it's fixed\". A small daemon on a machine you control runs it on schedule using your local coding agent.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fhomepage.png\" alt=\"Loopany dashboard\" width=\"100%\">\n\u003C\u002Fp>\n\nThe server only schedules, stores, authenticates, and notifies. **It never runs an LLM and never executes your code.** Execution is BYOA: [`@crewlet\u002Floopany`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@crewlet\u002Floopany) on *your* machine, with *your* credentials, files, and tools. Artifacts you choose to sync come back as durable content; the rest never leaves the box.\n\nA loop can stay **open** (a monitor or digest that runs indefinitely) or **closed** (a finish line: the loop completes itself when the goal is met).\n\nMost coding agents can already run on a cron or loop a task themselves. That is the easy 5% - the timer. The real work is the structure that lets you trust it and run reliably. A bare agent loop does not give you:\n\n- **Durable structure across runs** - state and logs so it never re-does work and gets smarter over time; a verifier so there is evidence, not vibes; a contract and boundary that decide whether you can safely walk away. A raw cron loop has none of this by default.\n- **Self-improving (evolve)** - a periodic pass that rewrites the loop itself (tighter contract, cheaper trigger, mechanical steps folded into scripts), so it gets sharper and cheaper the longer it runs. A DIY loop stays as dumb as day one.\n- **A team surface, not a terminal** - a shared dashboard, per-team notification channels, and failure alerts. Results show up where your team can see them, instead of scrolling a local terminal.\n- **BYOA + vendor-neutral** - runs on *your* machine with *your* agent and credentials; not locked to one vendor's agent. Switch agents without rebuilding.\n- **A safe, cheap control plane** - the server runs zero LLM and executes zero code; it only schedules, stores, authenticates, and notifies. You are not handing your code or secrets to a SaaS just to get scheduling.\n\n## Features\n\n- **Scheduled agent loops** - cron or one-shot; open monitors or closed goals that finish themselves when met.\n- **BYOA execution** - runs on your machine via `@crewlet\u002Floopany`; the server is zero-LLM and zero code-exec. Credentials and tools stay local.\n- **Self-improving loops** - evolve passes review run history, sharpen the brief, distill state, and refine the generative dashboard.\n- **Deterministic pre-stage** - optional workflow body for cheap mechanical work before the agent; failures fall back to the agent with context.\n- **Teams + notifications** - multi-user dashboard, per-team push channels (Telegram, Feishu, and more), failure alerts.\n- **Synced artifact home** - loop folder in, dashboard out; front-matter products (reports, kanban cards, calendars) render as generative UI.\n- **Templates** - React Doctor, Market Research, Follow-up Tracker, Docs Sweep, Housekeeper, Dependency Triage, Error Sweep.\n- **Self-hostable** - one process, embedded pglite by default for local, Postgres + object store for production; Docker image included.\n\n## Quickstart (connect to a server)\n\n**Hosted app:** sign in at **[https:\u002F\u002Floopany.ai](https:\u002F\u002Floopany.ai)** (or use your own self-hosted instance). You will also, for now, need at least one machine you control to run loops.\n\n1. **Sign in** to the Loopany web app at [loopany.ai](https:\u002F\u002Floopany.ai) (or your self-hosted instance).\n2. **Create a loop.** The *New loop* dialog hands you a short **connect snippet** with a server URL and a one-time connect-key.\n3. **Connect your machine.** Paste the whole snippet into your local coding agent - it connects the machine and builds the loop with you.\n\n### Daemon cheatsheet\n\n`npx @crewlet\u002Floopany --help` for everything:\n\n| Command | What it does |\n| --- | --- |\n| `up` \u002F `up --foreground` | connect & start the poll loop (detached \u002F foreground) |\n| `status` \u002F `down` | is the daemon running + connection state \u002F stop it |\n| `log` | survey a loop's recent runs (`--transcript` for full text) |\n| `new` \u002F `edit` | create or patch a loop (JSON config) |\n| `@latest update` | upgrade the daemon in place |\n\n---\n\n## How it works\n\nLoopany is one server process plus one daemon per machine. The server never runs an LLM and never executes your code - it only schedules, stores artifacts, authenticates, and notifies. Execution happens on **your** machine via the [`@crewlet\u002Floopany`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@crewlet\u002Floopany) daemon, talking to your local coding agent.\n\n```mermaid\nflowchart LR\n  Server[\"Loopany server\u003Cbr\u002F>schedules · stores · auth · notifies\u003Cbr\u002F>zero LLM · zero code-exec\"]\n  Daemon[\"@crewlet\u002Floopany\u003Cbr\u002F>on your machine\"]\n  Agent[\"Local coding agent\"]\n  Server \u003C-->|\"HTTP poll\"| Daemon\n  Daemon -->|\"runs \u002F reports\"| Agent\n```\n\n> **Early-stage note.** Loopany is still an early-stage project. The daemon runs with fairly high permissions on your machine - it executes your coding agent with your credentials - and we are continuously hardening security.\n\nA scheduler tick creates a *pending run*; your bound machine's next poll claims it, runs the agent, and reports the result (which can post to the loop's push channel). Because the agent runs on your machine, your credentials, files, and tools never leave it - the server only stores the bytes your loop chooses to sync back.\n\n---\n\n## Run your own server\n\n### Prerequisites\n\n- Node.js >= 22\n- pnpm 8.15 (pinned via the root `packageManager` field; `corepack enable` picks it up automatically)\n\n### Local development\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsuperdesigndev\u002Floopany-platform\ncd loopany-platform\npnpm install\npnpm dev            # http:\u002F\u002F127.0.0.1:3000\n```\n\nThat is a fully working server out of the box: auth is off (the app runs open), the database is an embedded, file-backed **pglite** Postgres at `~\u002F.loopany\u002Fpgdata` (zero external DB - it migrates itself at boot), and artifact bytes are held in memory. Use the Quickstart above against `http:\u002F\u002F127.0.0.1:3000` to connect a machine.\n\nAll configuration is env-based. For **local development only**, copy [`.env.example`](.env.example) to `packages\u002Fserver\u002F.env` and uncomment what you need - vite loads that file for `pnpm dev`. **`pnpm start` and Docker do NOT read `.env`**: in production pass real environment variables instead (Fly secrets, `docker -e` \u002F `--env-file`, or a systemd `Environment=`), never a committed `.env`.\n\n### Production (any Node host)\n\n```bash\npnpm install\npnpm build          # nitro build → packages\u002Fserver\u002F.output\npnpm start          # applies pending DB migrations, then serves on $PORT\n```\n\nFor a real deployment, set at minimum:\n\n- **Database** - either point `DATABASE_URL` at a Postgres (e.g. Supabase; set it to the transaction pooler `:6543`, plus `DIRECT_DATABASE_URL` at the direct `:5432` URL for migrations), or leave both unset and set **`LOOPANY_DB=pglite`** plus a persistent `LOOPANY_DATA_DIR` - the embedded pglite database lives at `\u003Cdir>\u002Fpgdata`. The built server treats a missing `DATABASE_URL` as a config error unless `LOOPANY_DB=pglite` explicitly opts into the embedded tier (so a lost database secret fails the deploy loudly instead of silently booting an empty ephemeral DB); only `pnpm dev` runs pglite without the opt-in. `pnpm start` applies pending migrations before serving (over the direct URL for the hosted tier; in-process for the pglite tier).\n- `GITHUB_CLIENT_ID` \u002F `GITHUB_CLIENT_SECRET` + `LOOPANY_AUTH_SECRET` (a long random value) + `LOOPANY_BASE_URL` + `LOOPANY_ALLOWED_LOGINS` - gate sign-in behind GitHub. Leaving these unset runs the app **open, with no auth** - fine locally, not on the public internet.\n- `LOOPANY_R2_*` - an S3-compatible object store (e.g. Cloudflare R2) for artifact bytes. Unset, artifacts are stored in memory and lost on restart.\n\n> **Exposing a server publicly? Set the auth vars.** With `GITHUB_CLIENT_ID` \u002F `GITHUB_CLIENT_SECRET` \u002F `LOOPANY_AUTH_SECRET` \u002F `LOOPANY_BASE_URL` \u002F `LOOPANY_ALLOWED_LOGINS` unset the app runs **open, with no sign-in** - anyone who can reach it is in. This applies equally to a bare Node host and the Docker image below.\n\n> **Run exactly one server process.** The in-process scheduler owns the cron loop; two processes against the same DB would double-fire every run.\n\n> **Backing up the embedded pglite tier.** `\u003CLOOPANY_DATA_DIR>\u002Fpgdata` is a LIVE Postgres data directory. Stop the server before copying it - a hot copy of a running data dir is not crash-consistent. If you need real, online backups, run the hosted tier instead (`DATABASE_URL`\u002FSupabase gives you point-in-time backups).\n\n### Docker\n\nThe included [`Dockerfile`](Dockerfile) builds the server. For the embedded pglite database, opt in with `LOOPANY_DB=pglite` and persist `\u002Fdata` on a volume; with a `DATABASE_URL` (Supabase\u002Fany Postgres) the container is stateless and needs no volume. (The opt-in is deliberate: without it a container that LOST its `DATABASE_URL` would silently boot an empty ephemeral database - instead it refuses to start.)\n\n```bash\ndocker build -t loopany .\n# Embedded pglite (opt in + persist the DB on a volume):\ndocker run -p 3000:3000 -e LOOPANY_DB=pglite -v loopany-data:\u002Fdata loopany\n# Or against Postgres (stateless):\ndocker run -p 3000:3000 -e DATABASE_URL=... -e DIRECT_DATABASE_URL=... loopany\n```\n\nPass configuration with `-e KEY=value` or `--env-file` (same variables as [`.env.example`](.env.example)).\n\n---\n\n## Development\n\n```bash\npnpm dev            # server on http:\u002F\u002F127.0.0.1:3000\npnpm -r test        # all tests\npnpm -r typecheck   # both packages\n```\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for the contributor guide (migrations, releases, PR flow) and [`AGENTS.md`](AGENTS.md) for architecture notes.\n\n## License\n\n[MIT](LICENSE) - every package is MIT:\n\n- The machine-side daemon [`@crewlet\u002Floopany`](packages\u002Fdaemon) is [MIT](packages\u002Fdaemon\u002FLICENSE).\n- The platform server [`@loopany\u002Fserver`](packages\u002Fserver) is [MIT](packages\u002Fserver\u002FLICENSE).\n\n© 2026 Superdesign. Contributions are accepted under the MIT license (inbound=outbound) - no CLA, no sign-off required.\n","Loopany 是一个用于构建和管理周期性智能体任务的基础设施平台。它支持用户定义可重复执行的自动化流程（如每日健康检查、周度研究摘要），通过本地部署的轻量级守护进程调用用户自有编码智能体（BYOA）定时执行，所有代码与敏感数据均保留在用户本地设备；平台仅负责调度、状态存储、身份认证与结果推送，并提供共享仪表盘与团队通知集成。其核心特点是支持开环（持续监控）与闭环（目标达成即终止）任务、跨轮次状态持久化、任务自优化能力，以及厂商中立的智能体兼容设计。适用于需要安全可控、可审计、团队协同的周期性自动化场景，如运维巡检、数据监控、合规报告生成等。",2,"2026-07-12 02:30:07","CREATED_QUERY"]