[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-84197":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":23,"discoverSource":24},84197,"polynoia","JuneQQQ\u002Fpolynoia","JuneQQQ","Polynoia — an IM-style platform for collaborating with multiple AI agents at once. An orchestrator auto-decomposes tasks and dispatches them to agents in parallel. FastAPI + React, runs on web, desktop (Tauri) and mobile (Capacitor).",null,"Python",114,3,2,0,50,1.81,false,"main",true,[],"2026-06-12 02:04:38","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fbrand\u002Flogo.svg\" alt=\"Polynoia\" width=\"104\" height=\"104\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Polynoia \u003Csub>\u003Csup>(AgentHub)\u003C\u002Fsup>\u003C\u002Fsub>\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>An open-source multi-agent workspace for building software through chat.\u003C\u002Fstrong>\u003Cbr\u002F>\n  Coordinate Claude Code, Codex, OpenCode, and custom agents in one IM-style interface,\n  with inline artifacts, workspace preview, git history, and guided merges.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README.md\">English\u003C\u002Fa> ·\n  \u003Ca href=\"README.zh-CN.md\">简体中文\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg alt=\"Python\"  src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.12+-3776AB?logo=python&logoColor=white\">\n  \u003Cimg alt=\"React\"   src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-149ECA?logo=react&logoColor=white\">\n  \u003Cimg alt=\"FastAPI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-async-009688?logo=fastapi&logoColor=white\">\n  \u003Cimg alt=\"Vite\"    src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-5-646CFF?logo=vite&logoColor=white\">\n  \u003Cimg alt=\"uv\"      src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fenv-uv-DE5FE9\">\n  \u003Cimg alt=\"platforms\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatforms-web%20·%20desktop%20·%20mobile-1F2937\">\n  \u003Cimg alt=\"status\"  src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-active%20dev-d97757\">\n\u003C\u002Fp>\n\n\u003C!-- HERO SHOT — replace with a real screenshot of a group chat: an orchestrator\n     dispatching sub-tasks in parallel, with an inline diff \u002F preview open. -->\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Freadme\u002Fimage.png\" alt=\"Polynoia — a group chat of AI agents building in parallel\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## Table of contents\n\n- [What is Polynoia?](#what-is-polynoia)\n- [Why it's different](#why-its-different)\n- [Screenshots](#screenshots)\n- [Feature tour](#feature-tour)\n  - [IM core](#-im-core)\n  - [The Orchestrator](#-the-orchestrator-multi-agent-teamwork)\n  - [Unified adapter layer](#-unified-adapter-layer)\n  - [Custom agents](#-custom-agents)\n  - [Inline artifacts](#-inline-artifacts)\n  - [Workspace IDE](#-workspace-ide)\n  - [Conflict closed-loop](#-conflict-closed-loop)\n  - [Streaming & refresh-safe](#-streaming--refresh-safe)\n  - [Cross-platform: web · desktop · mobile](#-cross-platform-web--desktop--mobile)\n  - [Sandbox & security](#-sandbox--security)\n- [Quick start](#quick-start)\n- [Architecture](#architecture)\n- [Tech stack](#tech-stack)\n- [Project layout](#project-layout)\n- [Docs & decisions](#docs--decisions)\n- [Built with AI](#built-with-ai)\n\n---\n\n## What is Polynoia?\n\nPolynoia is an **IM-style multi-agent collaboration platform** for agentic software\ndevelopment. Instead of treating each coding agent as a separate terminal session,\nPolynoia gives them a shared workspace, a chat-native coordination layer, and a\nreviewable path from idea → files → preview → commit.\n\nYou talk to AI coding agents — Claude Code, Codex, OpenCode, or your own custom agents —\nthe same way you'd use Slack\u002FLark\u002FWeChat: start a chat, send a message, get rich\nresults back, then inspect and merge the work without leaving the conversation.\n\n- **1:1 chats** — pin a single, well-scoped task to one agent.\n- **Group chats** — `@`-mention several agents; a designated **Orchestrator** decomposes the\n  task, dispatches sub-tasks **in parallel**, then verifies and merges the outputs.\n- **Inline artifacts** — replies aren't walls of text: code diffs, web previews, documents,\n  slides, spreadsheets, data tables and commit history all render — and stay editable — in\n  the conversation.\n- **Bring your own agents** — Claude Code \u002F Codex \u002F OpenCode sit behind one protocol, and you\n  can author custom agents (system prompt + tool set + capability tags) — even **from a\n  one-line description**.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Freadme\u002F产品定位概念图.png\" alt=\"Polynoia product positioning — many agents in one conversation\" width=\"860\" \u002F>\n\u003C\u002Fp>\n\n> Each agent works in its **own sandboxed git worktree**. The Orchestrator merges branches\n> into the workspace `main` and surfaces conflicts as a guided, side-by-side resolve UI.\n> Dependencies stay **local to the working directory** (Python via `uv`, Node via local\n> `node_modules`) — no global pollution.\n\n## Why it's different\n\n|  | Typical AI coding tool | **Polynoia** |\n|---|---|---|\n| Mental model | One assistant, one thread | **A team you chat with** — 1:1 and group |\n| Parallelism | Sequential turns | **Orchestrator fans out** sub-tasks concurrently |\n| Output | Text + code blocks | **12+ rich artifact types**, previewable & editable |\n| Multiple engines | Locked to one vendor | **Claude Code · Codex · OpenCode** under one adapter layer |\n| Merging work | Manual copy-paste | **Per-agent git worktrees** + guided conflict resolution |\n| Reach | Desktop browser | **Web · desktop (Tauri) · mobile (Capacitor)** from one codebase |\n\n---\n\n## Screenshots\n\n| Group chat & orchestration | Inline artifact preview |\n|---|---|\n| \u003Cimg src=\"assets\u002Freadme\u002F群聊与编排.png\" alt=\"Parallel agent work lanes\" width=\"420\"\u002F> | \u003Cimg src=\"assets\u002Freadme\u002F预览.png\" alt=\"Inline document \u002F slide \u002F diff preview\" width=\"420\"\u002F> |\n| **Workspace IDE** | **Conflict resolution** |\n| \u003Cimg src=\"assets\u002Freadme\u002Fdiff.png\" alt=\"File tree + editor + terminal\" width=\"420\"\u002F> | \u003Cimg src=\"assets\u002Freadme\u002Fchongtu.png\" alt=\"Guided merge-conflict resolution\" width=\"420\"\u002F> |\n\n---\n\n## Feature tour\n\n### 💬 IM core\n\nA chat client built for working *with* agents, not just prompting one.\n\n- **Conversation list** with pin · archive · full-text search across titles and message bodies.\n- **1:1 and group** conversations; per-member **role assignment** inside a group.\n- **`@`-mention picker** (fuzzy, Slack\u002FLinear-style) to summon specific agents.\n- **Reply \u002F quote \u002F copy \u002F retry**, and **\"rewind to here\"** code checkpoints to branch a\n  conversation from any earlier message.\n- **⌘K command palette** for instant search and navigation.\n\n### 🧠 The Orchestrator (multi-agent teamwork)\n\nThe Orchestrator **is an agent** (`role=\"orchestrator\"`), not special-cased code — so you can\nswap profiles, add it to any group, or run without one.\n\n- **Automatic task decomposition** → parallel dispatch to member agents.\n- **Burst lanes** — concurrent agent work is shown as parallel lanes, never interleaved into\n  an unreadable stream.\n- **Verify & merge** — collects sub-task outputs, validates them, and merges branches into\n  `main`.\n- **Failure fallback** and **multi-agent merge-conflict resolution** built in.\n\n### 🔌 Unified adapter layer\n\nOne protocol, multiple engines — add a new CLI agent without touching the core.\n\n| Adapter | Wire protocol | Notes |\n|---|---|---|\n| **Claude Code** | Claude Agent SDK | strong reasoning, long context |\n| **OpenCode** | Agent Client Protocol (ACP v1, JSON-RPC\u002FNDJSON) | open standard, local-first |\n| **Codex** | `codex` app-server streaming | backend set via `~\u002F.codex\u002Fconfig.toml` |\n\nPer-adapter **network proxy**, **credential auto-reuse** (uses your existing CLI logins — no\nextra API keys), and a clean split between *adapters* (the engine) and *contacts* (a\nconfigured persona on top of an engine).\n\n### 🤖 Custom agents\n\nContacts are `(adapter, model, name, persona, tools)` — one engine can spawn many roles.\n\n- **Role presets** + **granular tool toggles** (`read_file` \u002F `edit_file` \u002F `run_shell` \u002F\n  `network` \u002F `call_agent` …).\n- **Derived capability tags** so a group reads at a glance.\n- **Conversational creation** — describe what you want (\"a designer who writes React but can't\n  run shell commands\") and Polynoia drafts the agent for you to review.\n\n### 📄 Inline artifacts\n\nThe frontend renders each message as `parts: MessagePart[]` dispatched through a\n**registry** — a single reply can mix text + a diff + a live status strip. Part kinds include:\n\n`text` · `reasoning` · `tasks` · `diff` · `web` · `metrics` · `sql` · `schema` · `logs` ·\n`api` · `swatches` · `copy` · `file` · `image` · `ask-form` · `typing`\n\nPlus rich **read-only \u002F editable previews** for `.md` (WYSIWYG), **Marp** slides, `.html`,\n**editable `.xlsx`**, `.docx` \u002F `.pptx`, images, source code, and **live web previews** of the\napp an agent just built.\n\n### 🖥️ Workspace IDE\n\nWhen a chat is backed by a project workspace you get a full mini-IDE in the right rail:\n\n- **File tree** + **CodeMirror 6** editor (search\u002Freplace, VS Code keymap, minimap), with\n  `Ctrl+S → PUT → auto-commit`.\n- **Interactive PTY terminal** docked in the panel.\n- **GitHub-style commit-history browser** with side-by-side diffs.\n- Resizable, persisted panels.\n\n### 🌿 Conflict closed-loop\n\nParallel agents on separate branches *will* collide. Polynoia turns that into a first-class,\nguided flow: conflicts surface as a card in the chat, open a **side-by-side resolve pane**,\nand the resolution is committed back to `main` — with the whole loop explained in plain\nlanguage (no raw git hashes in your face).\n\n### 🌊 Streaming & refresh-safe\n\n- **AI SDK 6 `UIMessageChunk` protocol** over WebSocket (28 chunk types + custom `data-*`).\n- **Refresh-safe streaming** — reconnect mid-generation and the thinking\u002Freply stream picks\n  right back up where it left off.\n\n### 📱 Cross-platform: web · desktop · mobile\n\nOne Vite build, three runtimes — **not** three rewrites.\n\n- **Web** — the full experience in any modern browser.\n- **Desktop** — **Tauri 2** wraps the web build with native window chrome.\n- **Mobile** — **Capacitor 6** wraps the *same* build: a WeChat-style 4-tab home\n  (Chats · Agents · Projects · Me) with a lightweight, read-only-preview IM subset tuned for\n  touch.\n\n### 🔒 Sandbox & security\n\n- Each agent subprocess runs in `~\u002Fsandbox\u002F\u003Cconv-id>\u002F` with `cwd` pinned and a restricted env.\n- **Tool whitelist** and **network allow-list** (LLM endpoint + npm + pypi).\n- Per-agent **git worktrees** keep work isolated until an explicit merge.\n\n---\n\n## Quick start\n\n### Prerequisites (one-time)\n\n| Tool | Requirement | Install |\n|---|---|---|\n| Python | 3.12+ | system package manager |\n| Node | 22+ | nvm \u002F system package |\n| uv | latest | `curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh \\| sh` |\n| Claude Code CLI | logged in | `npm i -g @anthropic-ai\u002Fclaude-code`, then `claude` to log in |\n| Codex CLI _(optional)_ | configured | `npm i -g @openai\u002Fcodex`; backend via `~\u002F.codex\u002Fconfig.toml` |\n| OpenCode CLI _(optional)_ | — | `npm i -g opencode-ai`, then `opencode auth login` |\n| pnpm | 9.x | **`make install` pulls it via corepack automatically** |\n\n### Install & run\n\n```bash\nmake install      # uv sync (server) + pnpm install (web)\nmake dev          # server :7780 + web :5173  (Ctrl-C stops both)\n```\n\nOpen **http:\u002F\u002F127.0.0.1:5173\u002F** (API at http:\u002F\u002F127.0.0.1:7780\u002F).\n\n### Seed a demo (recommended)\n\nWith `make dev` running, in a second terminal:\n\n```bash\npython3 scripts\u002Fseed_demo.py            # personas + a workspace + a group chat\n```\n\nOr load the **launch-readiness testkit** used for submission review:\n\n```bash\nbash scripts\u002Ftestkit\u002Freset.sh # clean DB + seed launch \u002F routing \u002F merge \u002F diff cases\n```\n\nThe seeded cases cover release notes, QA workbook, status page, telemetry report,\nGo-live collaboration, @ routing, conflict handling, main sync, diff\u002Fhistory, and\ntool-error recovery.\n\n### Handy commands\n\n```bash\nmake server   # backend only (logs)\nmake web      # frontend only\nmake test     # pytest + vitest\nmake lint     # ruff + biome\nmake types    # regenerate shared TS types from Pydantic\n```\n\n---\n\n## Architecture\n\n```\napps\u002F\n├── web\u002F          Vite + React + TypeScript — the UI shell (reused by all 3 platforms)\n├── server\u002F       Python 3.12 + FastAPI + asyncio (uv-managed)\n├── desktop\u002F      Tauri 2 wrapper around apps\u002Fweb\u002Fdist\n└── mobile\u002F       Capacitor 6 wrapper around apps\u002Fweb\u002Fdist\n\ndocs\u002F\n├── research\u002F          deep-dive on 20 libraries + UI design (baseline)\n├── superpowers\u002Fspecs\u002F full design spec\n├── ADR\u002F               21 architecture decision records\n└── design\u002F            conflict closed-loop charter + diagrams\n```\n\n**Three protocol layers:**\n\nSee the [design spec](docs\u002Fsuperpowers\u002Fspecs\u002F2026-05-23-polynoia-design.md) and the\n[context-system overview](docs\u002Fdesign\u002Fcontext-system.md) for the full model.\n\n## Tech stack\n\n- **Backend** · Python 3.12 · uv · FastAPI · Pydantic v2 · LiteLLM · SQLite (→ Postgres) · Alembic\n- **Frontend** · React 18 + Vite · Radix + shadcn\u002Fui · Tailwind 4 · Motion · Lucide · CodeMirror 6 · `@git-diff-view\u002Freact` · Vercel AI SDK 6 · react-markdown\n- **Shells** · Tauri 2 (desktop) · Capacitor 6 (mobile)\n\n## Project layout\n\n```\npolynoia\u002F\n├── apps\u002F            web (Vite+React) · server (FastAPI) · desktop (Tauri) · mobile (Capacitor)\n├── packages\u002F        shared TS types · cross-platform core · ui-web · design-tokens\n├── docs\u002F            research · specs · ADRs · diagrams\n├── scripts\u002F         demo + scenario seeders\n├── .skills\u002F         custom skills (add-adapter \u002F add-card-type \u002F …)\n└── Makefile         make dev \u002F test \u002F lint \u002F types \u002F build\n```\n\n## Docs & decisions\n\n- **Design spec** — [`docs\u002Fsuperpowers\u002Fspecs\u002F2026-05-23-polynoia-design.md`](docs\u002Fsuperpowers\u002Fspecs\u002F2026-05-23-polynoia-design.md)\n- **Research synthesis** (20 libraries) — [`docs\u002Fresearch\u002F00-SYNTHESIS.md`](docs\u002Fresearch\u002F00-SYNTHESIS.md)\n- **Architecture decisions** — [`docs\u002FADR\u002F`](docs\u002FADR\u002F) (why the orchestrator is an agent, ACP\n  over stdout JSON, CodeMirror over Monaco, Capacitor over React Native, …)\n\n## Built with AI\n\nThis project is built **with** AI as a first-class collaborator. The conventions live in\n[`CLAUDE.md`](CLAUDE.md) (project-level AI collaboration spec), with decision records in\n[`docs\u002FADR\u002F`](docs\u002FADR\u002F), the submission-facing collaboration summary in\n[`docs\u002Fai-collaboration.md`](docs\u002Fai-collaboration.md), and research synthesis in\n[`docs\u002Fresearch\u002F00-SYNTHESIS.md`](docs\u002Fresearch\u002F00-SYNTHESIS.md). Commits follow\n[Conventional Commits](https:\u002F\u002Fwww.conventionalcommits.org\u002F).\n\n---\n\n\u003Cp align=\"center\">\u003Csub>Polynoia — many minds, one conversation.\u003C\u002Fsub>\u003C\u002Fp>\n","2026-06-11 04:12:31","CREATED_QUERY"]