[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74945":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":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},74945,"background-agents","ColeMurray\u002Fbackground-agents","ColeMurray","An open-source background agents coding system","https:\u002F\u002Fbackgroundagents.dev",null,"TypeScript",1928,292,11,23,0,31,112,247,93,105.4,"MIT License",false,"main",true,[],"2026-06-12 04:01:16","# Background Agents: Open-Inspect\n\nAn open-source background agents coding system inspired by\n[Ramp's Inspect](https:\u002F\u002Fbuilders.ramp.com\u002Fpost\u002Fwhy-we-built-our-background-agent).\n\n## Overview\n\nOpen-Inspect provides a hosted background coding agent that can:\n\n- Work on tasks in the background while you focus on other things\n- Access full development environments (Node.js, Python, git, browser automation, VS Code)\n- Connect from anywhere — web UI, Slack, GitHub PRs, Linear issues, or webhooks\n- Enable multiplayer sessions where multiple people can collaborate in real time\n- Create PRs with proper commit attribution to the prompting user\n- Run on a schedule — cron jobs, Sentry alerts, and webhook-triggered automations\n- Spawn parallel sub-tasks that work in separate sandboxes simultaneously\n- Use your choice of AI model — Anthropic Claude, OpenAI Codex (via ChatGPT subscription), or\n  OpenCode Zen\n\n## Security Model (Single-Tenant Only)\n\n> **Important**: This system is designed for **single-tenant deployment only**, where all users are\n> trusted members of the same organization with access to the same repositories.\n\n### How It Works\n\nThe system uses a shared GitHub App installation for all git operations (clone, push). This means:\n\n- **All users share the same GitHub App credentials** - The GitHub App must be installed on your\n  organization's repositories, and any user of the system can access any repo the App has access to\n- **No per-user repository access validation** - The system does not verify that a user has\n  permission to access a specific repository before creating a session\n- **User OAuth tokens are used for PR creation** - PRs are created using the user's GitHub OAuth\n  token, ensuring proper attribution and that users can only create PRs on repos they have write\n  access to\n\n### Token Architecture\n\n| Token Type       | Purpose                | Scope                            |\n| ---------------- | ---------------------- | -------------------------------- |\n| GitHub App Token | Clone repos, push code | All repos where App is installed |\n| User OAuth Token | Create PRs, user info  | Repos user has access to         |\n| WebSocket Token  | Real-time session auth | Single session                   |\n\n### Why Single-Tenant Only\n\nThis architecture follows\n[Ramp's Inspect design](https:\u002F\u002Fbuilders.ramp.com\u002Fpost\u002Fwhy-we-built-our-background-agent), which was\nbuilt for internal use where all employees are trusted and have access to company repositories.\n\n**For multi-tenant deployment**, you would need:\n\n- Per-tenant GitHub App installations\n- Access validation at session creation\n- Tenant isolation in the data model\n\n### Deployment Recommendations\n\n1. **Deploy behind your organization's SSO\u002FVPN** - Ensure only authorized employees can access the\n   web interface\n2. **Install GitHub App only on intended repositories** - The App's installation scope defines what\n   the system can access\n3. **Use GitHub's repository selection** - When installing the App, select specific repositories\n   rather than \"All repositories\"\n\n## Architecture\n\n```\n                                    ┌──────────────────┐\n                                    │     Clients      │\n                                    │ ┌──────────────┐ │\n                                    │ │  Web \u002F Slack │ │\n                                    │ │ GitHub \u002F Lin.│ │\n                                    │ │   Webhooks   │ │\n                                    │ └──────────────┘ │\n                                    └────────┬─────────┘\n                                             │\n                                             ▼\n┌────────────────────────────────────────────────────────────────────┐\n│                     Control Plane (Cloudflare)                     │\n│  ┌──────────────────────────────────────────────────────────────┐  │\n│  │                   Durable Objects (per session)              │  │\n│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌───────────────┐    │  │\n│  │  │ SQLite  │  │WebSocket│  │  Event  │  │   GitHub      │    │  │\n│  │  │   DB    │  │   Hub   │  │ Stream  │  │ Integration   │    │  │\n│  │  └─────────┘  └─────────┘  └─────────┘  └───────────────┘    │  │\n│  └──────────────────────────────────────────────────────────────┘  │\n│  ┌──────────────────────────────────────────────────────────────┐  │\n│  │              D1 Database (repo-scoped secrets)               │  │\n│  └──────────────────────────────────────────────────────────────┘  │\n└────────────────────────────────┬───────────────────────────────────┘\n                                 │\n                                 ▼\n┌────────────────────────────────────────────────────────────────────┐\n│                      Data Plane (Modal)                            │\n│  ┌──────────────────────────────────────────────────────────────┐  │\n│  │                     Session Sandbox                          │  │\n│  │  ┌───────────┐  ┌───────────┐  ┌───────────┐                 │  │\n│  │  │ Supervisor│──│  OpenCode │──│   Bridge  │─────────────────┼──┼──▶ Control Plane\n│  │  └───────────┘  └───────────┘  └───────────┘                 │  │\n│  │                      │                                       │  │\n│  │              Full Dev Environment                            │  │\n│  │      (Node.js, Python, git, agent-browser)                   │  │\n│  └──────────────────────────────────────────────────────────────┘  │\n└────────────────────────────────────────────────────────────────────┘\n```\n\n## Packages\n\n| Package                                 | Description                                 |\n| --------------------------------------- | ------------------------------------------- |\n| [modal-infra](packages\u002Fmodal-infra)     | Modal sandbox infrastructure                |\n| [control-plane](packages\u002Fcontrol-plane) | Cloudflare Workers + Durable Objects        |\n| [web](packages\u002Fweb)                     | Next.js web client                          |\n| [slack-bot](packages\u002Fslack-bot)         | Slack integration (sessions from messages)  |\n| [github-bot](packages\u002Fgithub-bot)       | GitHub integration (auto-review, @mention)  |\n| [linear-bot](packages\u002Flinear-bot)       | Linear integration (issue → coding session) |\n| [shared](packages\u002Fshared)               | Shared types and utilities                  |\n\n## Getting Started\n\nFor a practical setup guide (local + contributor + deployment paths), start with\n**[docs\u002FSETUP_GUIDE.md](docs\u002FSETUP_GUIDE.md)**.\n\nSee **[docs\u002FGETTING_STARTED.md](docs\u002FGETTING_STARTED.md)** for deployment instructions.\n\nTo understand the architecture and core concepts, read\n**[docs\u002FHOW_IT_WORKS.md](docs\u002FHOW_IT_WORKS.md)**.\n\nTo set up recurring scheduled tasks, see **[docs\u002FAUTOMATIONS.md](docs\u002FAUTOMATIONS.md)**.\n\n## Key Features\n\n### Fast Startup\n\nSessions start near-instantly through multiple layers of warming:\n\n- **Filesystem snapshots** — After each prompt, sandbox state is saved; follow-up sessions restore\n  instead of re-cloning\n- **Pre-built repo images** — Toggle per-repo in Settings; rebuilt every 30 minutes with latest\n  commits and dependencies\n- **Proactive warming** — Sandbox begins spinning up as soon as you start typing, before you hit\n  Enter\n\n### Multiplayer Sessions\n\nMultiple users can collaborate in the same session:\n\n- Presence indicators show who's active\n- Prompts are attributed to their authors in git commits\n- Real-time streaming to all connected clients\n\n### Commit Attribution\n\nCommits are attributed to the user who sent the prompt:\n\n```typescript\n\u002F\u002F Configure git identity per prompt\nawait configureGitIdentity({\n  name: author.scmName,\n  email: author.scmEmail,\n});\n```\n\n### Multi-Provider Model Support\n\nChoose the AI model that fits your task, with per-session reasoning effort controls:\n\n| Provider     | Models                                                               |\n| ------------ | -------------------------------------------------------------------- |\n| Anthropic    | Claude Haiku 4.5, Sonnet 4.5\u002F4.6, Opus 4.5\u002F4.6\u002F4.7                   |\n| OpenAI       | GPT 5.2, GPT 5.4, GPT 5.5, GPT 5.2 Codex, 5.3 Codex, 5.3 Codex Spark |\n| OpenCode Zen | Kimi K2.5, MiniMax M2.5, GLM 5 (opt-in)                              |\n\nOpenAI models work with your existing ChatGPT subscription via OAuth — no separate API key needed.\nSee **[docs\u002FOPENAI_MODELS.md](docs\u002FOPENAI_MODELS.md)** for setup instructions.\n\n### Client Integrations\n\nInteract with agents from wherever your team already works:\n\n- **Web UI** — Full session management with real-time streaming, model\u002Freasoning selectors, terminal\n  panel, and multiplayer presence\n- **Slack Bot** — @mention or DM to start a session; replies thread back with results. Per-user\n  model and branch preferences via App Home. See [Slack integration](docs\u002Fintegrations\u002FSLACK.md)\n- **GitHub Bot** — Auto-review on PR open or respond to @mentions in PR comments. Configurable\n  per-repo. See [GitHub integration](docs\u002Fintegrations\u002FGITHUB.md)\n- **Linear Bot** — Mention or assign the agent on an issue to start a coding session, post progress\n  activities, and link the resulting PR. See [Linear integration](docs\u002Fintegrations\u002FLINEAR.md)\n- **Webhooks** — Trigger sessions from any external system via authenticated HTTP POST\n\n### Automations\n\nSchedule recurring tasks or react to external events — no human in the loop:\n\n- **Cron schedules** — Hourly, daily, weekly, monthly, or custom 5-field cron with timezone support\n- **Sentry alerts** — Auto-triage on new errors, regressions, or critical metric alerts\n- **Inbound webhooks** — JSONPath condition filters to gate which payloads spawn sessions\n- Auto-pause after 3 consecutive failures, manual trigger button, full run history\n\nSee **[docs\u002FAUTOMATIONS.md](docs\u002FAUTOMATIONS.md)** for setup instructions.\n\n### Sandbox Environment\n\nEvery session runs in an isolated Modal sandbox with a full development environment:\n\n- **Pre-installed:** Node.js 22, Python 3.12, Bun, git, GitHub CLI, build-essential\n- **Browser automation:** agent-browser CLI with headless Chromium for screenshots, visual diffs,\n  and UI verification\n- **Code-server:** Optional browser-based VS Code connected to the session workspace\n- **Web terminal:** ttyd-powered terminal accessible from the session UI\n- **Port tunneling:** Expose up to 10 dev server ports via encrypted tunnels\n- **Repo secrets:** AES-256-GCM encrypted, scoped per-repo or globally, injected as env vars at\n  spawn time. Supports bulk `.env` paste import\n\n### Sub-Task Spawning\n\nAgents can decompose work into parallel child sessions:\n\n- `spawn-task` creates a child session in its own sandbox and returns immediately\n- Parent continues working while children run in parallel on separate branches\n- `get-task-status` and `cancel-task` for coordination\n- Depth limits and per-repo guardrails enforced\n\n### Repository Lifecycle Scripts\n\nRepositories can define two optional startup scripts under `.openinspect\u002F`:\n\n```bash\n# .openinspect\u002Fsetup.sh (provisioning)\n#!\u002Fbin\u002Fbash\nnpm install\npip install -r requirements.txt\n```\n\n```bash\n# .openinspect\u002Fstart.sh (runtime startup)\n#!\u002Fbin\u002Fbash\ndocker compose up -d postgres redis\n```\n\n- `setup.sh` runs for image builds and fresh sessions\n- `setup.sh` is skipped for repo-image and snapshot-restore starts\n- `setup.sh` failures are non-fatal for fresh sessions, but fatal in image build mode\n- `start.sh` runs for every non-build session startup (fresh, repo-image, snapshot-restore)\n- `start.sh` failures are strict: if present and it fails, session startup fails\n- Default timeouts:\n  - `SETUP_TIMEOUT_SECONDS` (default `300`)\n  - `START_TIMEOUT_SECONDS` (default `120`)\n- Both hooks receive `OPENINSPECT_BOOT_MODE` (`build`, `fresh`, `repo_image`, `snapshot_restore`)\n\n## License\n\nMIT\n\n## Credits\n\nInspired by [Ramp's Inspect](https:\u002F\u002Fbuilders.ramp.com\u002Fpost\u002Fwhy-we-built-our-background-agent) and\nbuilt with:\n\n- [Modal](https:\u002F\u002Fmodal.com) - Cloud sandbox infrastructure\n- [Cloudflare Workers](https:\u002F\u002Fworkers.cloudflare.com) - Edge computing\n- [OpenCode](https:\u002F\u002Fopencode.ai) - Coding agent runtime\n- [Next.js](https:\u002F\u002Fnextjs.org) - Web framework\n","Background Agents: Open-Inspect 是一个开源的后台代理编码系统，旨在帮助开发者在后台执行任务。其核心功能包括支持多种开发环境（如Node.js、Python等）、多渠道接入（例如Web界面、Slack、GitHub PRs等）、实时多人协作、定时任务执行以及并行子任务处理。此外，该系统允许用户选择不同的AI模型进行辅助编程。由于其设计为单租户部署模式，所有用户均需属于同一组织，并共享相同的GitHub App权限，这使得它特别适合于内部团队使用，以提高开发效率和协作能力。安全方面，通过组织内的SSO\u002FVPN限制访问，确保只有授权员工能够使用该系统。",2,"2026-06-11 03:51:31","high_star"]