The-Vibe-Company/companionPublic

Persistent AI companions on Box, powered by Pi. Simple web, durable execution, reproducible local development.

AI summary: A web and mobile UI for deploying and managing secure fleets of task-optimized AI agents with persistent memory.

Stars
2.4K
+3 today
Forks
291
Watchers
6
Open issues
46
Open PRs
73
Contributors
~17
Commits
961
Branches
438

TypeScriptMITCreated Feb 7, 2026Last push 6d agoLatest release v0.2.0+1 stars this week+3 this month

Quick answers

What is companion?
A web and mobile UI for deploying and managing secure fleets of task-optimized AI agents with persistent memory.
What does companion do?
Companion provides a unified graphical interface for orchestrating fleets of specialized AI agents built on Claude Code and Codex. It abstracts the complexity of deploying isolated AI environments by allowing users to launch agents with specific roles, tools, and private network access directly from a browser or mobile device. The system integrates 'Granite' vaults for durable memory, enabling agents to maintain context over time and share specific memories with other agents in the fleet. It also facilitates secure, private access to agent APIs and dashboards via Tailscale, ensuring sensitive workflows remain protected from the public internet.
Who is companion for?
AI engineers, operations teams, and consultants who need to manage multiple, specialized AI agents securely. It is ideal for users looking to scale agentic workflows beyond a single local terminal.
How do I get started with companion?
Clone the repository and follow the setup instructions to configure your Tailscale network and Granite vaults.
How popular is companion on GitHub?
The-Vibe-Company/companion has 2,403 stars and 291 forks on GitHub, and gained 1 stars in the last 7 days.
What license does companion use?
The-Vibe-Company/companion is released under the MIT license.

Star history

since Jul 28, 2026
01K2KJul 2026Aug 2026Sep 2026Oct 2026
2.4K stars as of Oct 4, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 13 commits2026-02-08: 7 commits2026-02-09: 21 commits2026-02-10: 46 commits2026-02-11: 30 commits2026-02-12: 26 commits2026-02-13: 51 commits2026-02-14: 9 commits2026-02-15: 11 commits2026-02-16: 17 commits2026-02-17: 2 commits2026-02-18: 21 commits2026-02-19: 34 commits2026-02-20: 9 commits2026-02-21: 3 commits2026-02-22: 3 commits2026-02-23: 1 commit2026-02-24: 8 commits2026-02-25: 4 commits2026-02-26: 17 commits2026-02-27: 5 commits2026-02-28: 15 commits2026-03-01: 5 commits2026-03-02: 0 commits2026-03-03: 7 commits2026-03-04: 7 commits2026-03-05: 2 commits2026-03-06: 5 commits2026-03-07: 0 commits2026-03-08: 2 commits2026-03-09: 1 commit2026-03-10: 9 commits2026-03-11: 3 commits2026-03-12: 7 commits2026-03-13: 12 commits2026-03-14: 18 commits2026-03-15: 33 commits2026-03-16: 5 commits2026-03-17: 11 commits2026-03-18: 10 commits2026-03-19: 1 commit2026-03-20: 0 commits2026-03-21: 1 commit2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 2 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 3 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 1 commit2026-03-31: 0 commits2026-04-01: 6 commits2026-04-02: 2 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 1 commit2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 8 commits2026-06-04: 2 commits2026-06-05: 1 commit2026-06-06: 1 commit2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 8 commits2026-09-01: 14 commits2026-09-02: 1 commit2026-09-03: 0 commits2026-09-04: 32 commits2026-09-05: 0 commits2026-09-06: 42 commits2026-09-07: 260 commits2026-09-08: 16 commits2026-09-09: 23 commits2026-09-10: 9 commits2026-09-11: 1 commit2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 4 commits2026-09-15: 0 commits2026-09-16: 5 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 2 commits2026-09-22: 0 commits2026-09-23: 3 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
939 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    939 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What companion does

Companion provides a unified graphical interface for orchestrating fleets of specialized AI agents built on Claude Code and Codex. It abstracts the complexity of deploying isolated AI environments by allowing users to launch agents with specific roles, tools, and private network access directly from a browser or mobile device. The system integrates 'Granite' vaults for durable memory, enabling agents to maintain context over time and share specific memories with other agents in the fleet. It also facilitates secure, private access to agent APIs and dashboards via Tailscale, ensuring sensitive workflows remain protected from the public internet.

AI engineers, operations teams, and consultants who need to manage multiple, specialized AI agents securely. It is ideal for users looking to scale agentic workflows beyond a single local terminal.

  • Fleet Orchestration: Deploy and manage multiple specialized agents (e.g., researcher, coder, analyst) from a single dashboard.
  • Granite Memory Vaults: Provides agents with durable, persistent memory that can be selectively shared across the fleet.
  • Private Network Access: Integrates with Tailscale to expose agent APIs and UIs securely without public internet exposure.
  • Isolated Environments: Runs each agent in its own isolated runtime to prevent cross-contamination of tools and data.
  • Client-Ready Workspaces: Allows rapid duplication and deployment of standardized agent fleets for different clients or projects.

Where teams use it

Multi-Agent Workflows

Coordinate a team of specialized agents where one handles research while another writes code based on shared memory.

Secure Client Deployments

Quickly spin up an isolated, secure AI workspace for a client without needing to manually configure the underlying infrastructure.

Mobile Agent Management

Monitor agent tasks, approve tool usage, and interact with your AI fleet while away from your desktop.

Private Enterprise Operations

Run powerful AI workflows on sensitive internal data safely hidden behind a Tailscale VPN.

Getting started: Clone the repository and follow the setup instructions to configure your Tailscale network and Granite vaults.

README

main branch

companions.build

Persistent AI companions with their own computer. Each personal account owns an isolated set of Companions, conversations, connections, automations, templates, files, and billing records. Pi is the agent harness, Bun packages the Linux runtime, PostgreSQL is the durable control plane, and the web client uses React, shadcn/ui, and AI Elements.

The repository currently implements the local product path and the hosted integration boundaries. It is not evidence that the hosted service, provider OAuth applications, Stripe prices, or cold Box performance are production ready. See the V0 status and gaps.

This product lives in The-Vibe-Company/companion. The former Skills Hub is maintained in Skillpack. See the repository migration notes for history and deployment boundaries.

Run locally

For the agent development loop and the Herdr service control panel, start with the worktree workflow: ./dev setup --portless, then ./dev workspace. The panel starts, stops and restarts components and exposes service URLs and validation results.

Prerequisites are Python 3, Docker, and Git. The launcher downloads checksum-verified Bun 1.4.2 inside the checkout and starts isolated PostgreSQL, MinIO, Mailpit, API, worker, executor, and web processes.

git clone https://github.com/The-Vibe-Company/companion.git
cd companion
python3 scripts/dev.py

Open the printed web address, enter an email, then use the link in the printed Mailpit address. Local mode uses a deterministic Pi test model by default. Create a Companion and send write-note to exercise a real Pi tool call inside its Linux container. slow-write exercises cancellation; crash-after-effect exercises recovery without repeating the tool effect.

Each checkout derives its own ports, database, object bucket, mail inbox, and labeled containers. Set CONDUCTOR_PORT to choose an explicit web port; API is +1, PostgreSQL +2, MinIO +3, Mailpit SMTP +5, and Mailpit web +6. Ctrl-C stops resources owned by that checkout while retaining its local data.

For real model responses, create an uncommitted .env:

AGENT_TEST_MODE=0
MODEL_PROVIDER=google
MODEL_ID=gemini-2.5-flash
GEMINI_API_KEY=your-key

Google, Anthropic, OpenAI, OpenRouter, and Z.AI Coding Plan are supported. The UI projects the configured model catalog and stores a validated model choice per Companion. Restart the launcher after changing configuration.

The local launcher applies the complete PostgreSQL schema before it starts any service. A hosted release must use the same order: run bun run migrate as its release command, then start API, executor, and worker with COMPANIONS_SCHEMA_PREPARED=1. Each service verifies the stored schema fingerprint before becoming ready. A service launched on its own without that flag still performs the idempotent, advisory-locked migration and skips DDL when the current fingerprint is present.

Run the production container

The root image builds the Vite client and frozen Linux agent with Bun 1.4.2. It defaults to the api role on 0.0.0.0:$PORT and serves the client from the same origin. Run migrate once for a release, then launch api, executor, and worker as separate services from the same image:

docker build -t companions.build .
docker run --rm --env-file .env.production companions.build migrate
docker run --env-file .env.production --env-file .env.api -p 3000:3000 companions.build api
docker run --env-file .env.production --env-file .env.executor companions.build executor
docker run --env-file .env.production --env-file .env.worker companions.build worker

The ignored .env.production file holds shared configuration and must provide DATABASE_URL, the public HTTPS APP_URL, BETTER_AUTH_SECRET, and a 64-character hexadecimal COMPANIONS_ENCRYPTION_KEY. Configure SMTP or Resend (EMAIL_PROVIDER=resend, EMAIL_FROM, RESEND_API_KEY) for magic-link login and S3 for chat files. Box, model-provider, OAuth, and Stripe credentials are required only for the product surfaces enabled in that deployment; absence remains visible as unavailable and is not simulated. See production plugin setup for OAuth variables, callbacks, provider prerequisites and acceptance checks. Only the API role needs an exposed port. Trigger filters run inside the image's bounded QuickJS WebAssembly runtime, so API, executor, and worker services do not need a Docker socket. LOCAL_RUNTIME=0 is the image default; a hosted executor uses Box rather than attempting to launch local agent containers.

For an invitation-only beta, set PRIVATE_BETA_EMAILS to an exact comma-separated list of emails on API, executor, and worker. Those users sign in with a verified magic link and can work without Stripe activation. Other users cannot sign in or use existing sessions; runtime work rechecks the owner's current verified email. Beta usage is recorded but excluded from Stripe delivery, including after beta ends. An explicitly empty list closes access; removing the variable restores normal subscription requirements. Redeploy all three roles when changing the list. Keep BILLING_TEST_MODE disabled in production.

On Railway, connect the API, worker, and executor services to this GitHub repository's main branch with the root Dockerfile. Each role keeps its own start command: /app/scripts/container-entrypoint.sh api, worker, or executor. The API uses /app/scripts/container-entrypoint.sh migrate as its pre-deploy command and /health as its readiness check. Pushes to main deploy all three application services; PostgreSQL and MinIO retain their independent images and persistent volumes. The executor automatically publishes and verifies a base named snapshot from the bundled agent distribution, recreates it if missing, and removes unreferenced older managed images after replacement. BOX_TEMPLATE is only needed when opting out with BOX_MANAGED_TEMPLATE=0. See the image lifecycle. No GitHub Actions workflow is required. The routine publication-mode release requires a coordinated rollout instead of independent automatic deployments: pause those deployments before merging, stop the old API, worker and executor, then migrate and start all roles from the updated image, with the API last. Follow the mandatory routine publication rollout and rollback procedure before enabling admissions again; an old executor does not enforce the new publication modes. Set APP_URL and BETTER_AUTH_URL consistently to the public HTTPS domain on all three roles; map the Railway custom domain to the actual service port, rather than assuming the Docker default.

Keep service-specific credentials in the corresponding ignored .env.api, .env.executor, and .env.worker files. Put the selected model-provider key in .env.api only. In production, model requests use ${APP_URL}/api/model-gateway (or an explicit HTTPS MODEL_GATEWAY_URL ending in /api/model-gateway). The executor gives each admitted run a signed, expiring credential; Box receives no platform model key. The gateway checks the current run, owner and selected model before forwarding each request. Provider-reported usage is recorded independently of the agent transcript. Development without MODEL_GATEWAY_URL retains the direct-provider path for owned local canaries.

Run the isolated image acceptance (it creates and removes its own PostgreSQL container and network):

python3 scripts/bun.py scripts/test-production-container.ts

Run on Box

Prepare the frozen runtime once, then create Box-backed Companions from it:

# Set BOX_API_KEY in .env first. Never commit credentials.
python3 scripts/bun.py scripts/prepare-box-template.ts companions-agent-v1-your-release
# Add BOX_TEMPLATE=companions-agent-v1-your-release to .env, then restart scripts/dev.py.

The executor creates or resumes the same Box and owns every Pi run. It stages the selected model, plugins, files, trigger context, and control MCP, and persists intent before each external effect. Opening the desktop wakes the Box when necessary. Human takeover is shown as complete only after the runtime confirms desktop control; headless work and chat continue. The authorized API route retrieves the provider desktop URL after readiness; it never dispatches a Pi run.

Choose a new immutable name for each release. Publication pins an archive, verifies every installed distribution file, and repeats the comparison on an independent Box restored from the named snapshot. A provider ready response alone never completes publication. Interrupted attempts retain their creation identities and reconcile an accepted capture without resubmitting it.

The V12 live canary covers first turn, new file creation after archive/resume, key-free model access, provider usage accounting, native control MCP skill installation and next-turn discovery. Browser acceptance opens the real desktop and uses mouse/keyboard under confirmed human control. The single cold-preparation sample was 10.5 seconds; wake preparation took 16.4 seconds. The initial viewer provision exceeded the 60-second canary deadline and later recovered without manual repair. These measurements do not establish the desired few-second startup guarantee. See the V12 measurement and the completion audit.

Product surfaces

  • Better Auth email magic links with PostgreSQL sessions and owner-scoped data.
  • Durable main chat with native Pi steering, cancellation, questions, Markdown, and private files.
  • Background routines, signed webhooks, code filters, provider reads, grouping, shared durable memory, explicit publish-to-chat, and task history.
  • OAuth and custom MCP connections selected independently for each Companion.
  • The companion-control MCP for identity, models, routines, triggers, tasks, delegation, templates, lifecycle operations, plugins, and delivery preparation.
  • Permanent Companions, temporary specialist replicas, immutable template revisions and rollback, Box snapshot adoption, and retained results.
  • Stripe Checkout/portal/webhooks, a deduplicated usage ledger, and independent client delivery with an explicit, revocable, audited maintenance surface.
  • Portable local-skill export, validation, private object-storage transfer, and import are wired into delivery and template preparation, with deterministic coverage and a real-Box canary.

Verify

# Fresh PostgreSQL and MinIO, server behavior, compiled Pi/Linux product path, web tests and build
python3 scripts/verify.py

# Wider packaging matrix: tools, MCP transports, skills, images, steering, sessions, and faults
python3 experiments/pi-bun/verify.py
python3 experiments/pi-bun/verify.py --scenario 'crash after'

# Credentialed canaries; these may create billable provider resources
AGENT_TEST_MODE=0 python3 scripts/bun.py scripts/live-model-canary.ts
python3 scripts/bun.py scripts/live-box-canary.ts
python3 scripts/bun.py scripts/live-box-canary.ts --wake-only
python3 scripts/bun.py scripts/live-desktop-canary.ts

To check chat concurrency on an existing owned Box, run the manual routine canary with an explicit private journal (one process per journal):

CANARY_STATE_FILE=.local/box-canary.json \
ROUTINE_CHAT_CANARY_STATE_FILE=.local/routine-chat-canary.json \
python3 scripts/bun.py scripts/live-routine-chat-canary.ts

It uses the authenticated local API session and configured Box credential. It creates a disabled routine, invokes only its /test endpoint, verifies that CHAT_OK settles while a foreground 30-second background command is still running, checks the final file/result, and removes its unchanged disabled routine. This is a paid live model test of manual routine/chat concurrency; it does not test clock scheduling. Restart with the same journal to reconcile the same request IDs. An unresolved create response is never resubmitted; an unresolved test response retains the disabled definition until a rerun resolves it. The journal records timings and proofs without credentials or provider payloads; existing workspace probe files are retained.

To exercise the server's actual routine clock, use a separate journal:

CANARY_STATE_FILE=.local/box-canary.json \
ROUTINE_CLOCK_CANARY_STATE_FILE=.local/routine-clock-canary.json \
python3 scripts/bun.py scripts/live-routine-clock-canary.ts

This API-only paid model canary creates an enabled UTC schedule at least 90 seconds ahead. Minute, hour, day and month are fixed, limiting an abandoned definition to at most annual recurrence. It never calls /test or changes the scheduler clock. The journal pins the target and creation intent; lost responses reconcile by exact fixture identity without another create. Once API history shows the single expected occurrence, the script disables the unchanged fixture immediately, verifies its result, and deletes it. Rerun the same journal after interruption to reconcile or clean up; use one process per journal. User-edited definitions are left untouched.

Read the testing guide before interpreting a passing suite. Deterministic tests prove product behavior at controlled boundaries; they do not prove model quality, live OAuth, Stripe pricing, provider reliability, or hosted latency.

Documentation

The project is MIT licensed. Never commit .env, provider keys, authentication links, local state, or verification artifacts.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

167 total
  1. v0.2.0v0.2.0Jun 3, 2026144 downloads

    ## [0.2.0](https://github.com/The-Vibe-Company/companion/compare/v0.1.0...v0.2.0) (2026-06-03) ### Features * add Linux systemd support for service install/uninstall ([#169](https://github.com/The-Vibe-Company/companion/issues/169)) ([73fb3f7](https://github.com/The-Vibe-Company/companion/commit/73fb3f721efde79fec50f9c74a4f078f821c35d3)) * add MCP server management support ([#198](https://github.com/The-Vibe-Company/companion/issues/198)) ([018cf1f](https://github.com/The-Vibe-Company/companion/commit/018cf1f65ea5e281c19a39367f8cccf14ac56c1f)) * add release-please for automated npm publishing ([#24](https://github.com/The-Vibe-Company/companion/issues/24)) ([93b24ee](https://github.com/The-Vibe-Company/companion/commit/93b24ee4a12b3f32e81f59a348b25e89aaa86dce)) * **agents:** add conversational chat SDK, cloud relay, and runs view ([#471](https://github.com/The-Vibe-Company/companion/issues/471)) ([e8420c8](https://github.com/The-Vibe-Company/companion/commit/e8420c824cc07b8bb374ec15b6b01653e94daef6)) * **agents:** add Linear Agent Interaction SDK integration ([#486](https://github.com/The-Vibe-Company/companion/issues/486)) ([64b838d](https://github.com/The-Vibe-Company/companio

  2. the-companion: v0.95.0the-companion-v0.95.0Apr 1, 2026

    ## [0.95.0](https://github.com/The-Vibe-Company/companion/compare/the-companion-v0.94.0...the-companion-v0.95.0) (2026-04-01) ### Features * **keepalive:** proactive CLI relaunch when frontend is disconnected ([#634](https://github.com/The-Vibe-Company/companion/issues/634)) ([6a0e7c5](https://github.com/The-Vibe-Company/companion/commit/6a0e7c599c1700ca750fee2b6ad93f8aed362e99)) ### Bug Fixes * **workbench:** remove terminal and session extras ([#632](https://github.com/The-Vibe-Company/companion/issues/632)) ([9b5e675](https://github.com/The-Vibe-Company/companion/commit/9b5e67535233acb987f60348a7f3d90d6f76f83c))

  3. the-companion: v0.94.0the-companion-v0.94.0Mar 30, 2026

    ## [0.94.0](https://github.com/The-Vibe-Company/companion/compare/the-companion-v0.93.0...the-companion-v0.94.0) (2026-03-27) ### Features * **settings:** add provider token configuration for Claude Code and Codex ([#623](https://github.com/The-Vibe-Company/companion/issues/623)) ([a555985](https://github.com/The-Vibe-Company/companion/commit/a5559854b55b9605a0203a1ac07a998696487ddf))

  4. the-companion: v0.93.0the-companion-v0.93.0Mar 27, 2026

    ## [0.93.0](https://github.com/The-Vibe-Company/companion/compare/the-companion-v0.92.5...the-companion-v0.93.0) (2026-03-27) ### Features * **claude:** support channels protocol updates ([#613](https://github.com/The-Vibe-Company/companion/issues/613)) ([5baccb1](https://github.com/The-Vibe-Company/companion/commit/5baccb13ba0b87d2dfcaa9e0241951ca9febc684)) * **onboarding:** add provider setup wizard for Claude Code and Codex ([#615](https://github.com/The-Vibe-Company/companion/issues/615)) ([c2f2b55](https://github.com/The-Vibe-Company/companion/commit/c2f2b55118cb576532746cbde87eab4de4b87001)) * **recording-hub:** add hidden recording hub for replay, compat testing, and diagnostics ([#617](https://github.com/The-Vibe-Company/companion/issues/617)) ([6f6d411](https://github.com/The-Vibe-Company/companion/commit/6f6d411cc4e7cb7d16216f179212ef7ea44e4a40)) ### Bug Fixes * **linear:** log webhook acceptance and rejection ([#612](https://github.com/The-Vibe-Company/companion/issues/612)) ([08e495b](https://github.com/The-Vibe-Company/companion/commit/08e495b3ac06323d1113a43328682deedeac373d)) * **sidebar:** reconcile client sessions with server on poll ([#621](https://github.co

  5. the-companion: v0.92.5the-companion-v0.92.5Mar 18, 2026

    ## [0.92.5](https://github.com/The-Vibe-Company/companion/compare/the-companion-v0.92.4...the-companion-v0.92.5) (2026-03-18) ### Code Refactoring * **linear:** separate OAuth Apps from Tickets integration ([#607](https://github.com/The-Vibe-Company/companion/issues/607)) ([6710519](https://github.com/The-Vibe-Company/companion/commit/6710519081bcbde1c785c34075b9a56c5b52d898))

Code frequency

additions and deletions
+504.2K-504.2KWeek of 2026-02-01: +9,603 linesWeek of 2026-02-01: -364 linesWeek of 2026-02-08: +58,260 linesWeek of 2026-02-08: -17,392 linesWeek of 2026-02-15: +31,799 linesWeek of 2026-02-15: -13,012 linesWeek of 2026-02-22: +50,843 linesWeek of 2026-02-22: -3,867 linesWeek of 2026-03-01: +17,727 linesWeek of 2026-03-01: -3,453 linesWeek of 2026-03-08: +52,422 linesWeek of 2026-03-08: -18,624 linesWeek of 2026-03-15: +20,156 linesWeek of 2026-03-15: -4,393 linesWeek of 2026-03-22: +4,541 linesWeek of 2026-03-22: -10 linesWeek of 2026-03-29: +2,142 linesWeek of 2026-03-29: -705 linesWeek of 2026-04-05: +0 linesWeek of 2026-04-05: -0 linesWeek of 2026-04-12: +0 linesWeek of 2026-04-12: -0 linesWeek of 2026-04-19: +0 linesWeek of 2026-04-19: -0 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +592 linesWeek of 2026-05-24: -47 linesWeek of 2026-05-31: +220,519 linesWeek of 2026-05-31: -187,551 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +0 linesWeek of 2026-08-16: -0 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +504,172 linesWeek of 2026-08-30: -245,240 linesWeek of 2026-09-06: +84,670 linesWeek of 2026-09-06: -264,094 linesWeek of 2026-09-13: +5,848 linesWeek of 2026-09-13: -2,223 linesWeek of 2026-09-20: +3,580 linesWeek of 2026-09-20: -3,161 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesFeb 1, 2026Sep 27, 2026
+1.1M lines added, -764.1K removed over the last year.

Commits per week

last 52 weeks
3510Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 13 commitsWeek of 2026-02-08: 190 commitsWeek of 2026-02-15: 97 commitsWeek of 2026-02-22: 53 commitsWeek of 2026-03-01: 26 commitsWeek of 2026-03-08: 52 commitsWeek of 2026-03-15: 61 commitsWeek of 2026-03-22: 5 commitsWeek of 2026-03-29: 9 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 1 commitsWeek of 2026-05-31: 12 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 55 commitsWeek of 2026-09-06: 351 commitsWeek of 2026-09-13: 9 commitsWeek of 2026-09-20: 5 commitsWeek of 2026-09-27: 0 commitsOct 4, 2025Sep 27, 2026
939 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 6 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 5 commitsSun 12:00 — 5 commitsSun 13:00 — 3 commitsSun 14:00 — 0 commitsSun 15:00 — 6 commitsSun 16:00 — 3 commitsSun 17:00 — 3 commitsSun 18:00 — 5 commitsSun 19:00 — 0 commitsSun 20:00 — 11 commitsSun 21:00 — 14 commitsSun 22:00 — 15 commitsSun 23:00 — 23 commitsMon 0:00 — 26 commitsMon 1:00 — 26 commitsMon 2:00 — 15 commitsMon 3:00 — 17 commitsMon 4:00 — 22 commitsMon 5:00 — 15 commitsMon 6:00 — 16 commitsMon 7:00 — 16 commitsMon 8:00 — 4 commitsMon 9:00 — 9 commitsMon 10:00 — 3 commitsMon 11:00 — 11 commitsMon 12:00 — 8 commitsMon 13:00 — 6 commitsMon 14:00 — 11 commitsMon 15:00 — 19 commitsMon 16:00 — 5 commitsMon 17:00 — 5 commitsMon 18:00 — 5 commitsMon 19:00 — 8 commitsMon 20:00 — 3 commitsMon 21:00 — 5 commitsMon 22:00 — 47 commitsMon 23:00 — 19 commitsTue 0:00 — 2 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 5 commitsTue 8:00 — 5 commitsTue 9:00 — 16 commitsTue 10:00 — 2 commitsTue 11:00 — 3 commitsTue 12:00 — 8 commitsTue 13:00 — 9 commitsTue 14:00 — 7 commitsTue 15:00 — 9 commitsTue 16:00 — 6 commitsTue 17:00 — 3 commitsTue 18:00 — 8 commitsTue 19:00 — 5 commitsTue 20:00 — 9 commitsTue 21:00 — 7 commitsTue 22:00 — 6 commitsTue 23:00 — 6 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 3 commitsWed 8:00 — 2 commitsWed 9:00 — 2 commitsWed 10:00 — 9 commitsWed 11:00 — 6 commitsWed 12:00 — 3 commitsWed 13:00 — 2 commitsWed 14:00 — 17 commitsWed 15:00 — 8 commitsWed 16:00 — 7 commitsWed 17:00 — 11 commitsWed 18:00 — 2 commitsWed 19:00 — 7 commitsWed 20:00 — 10 commitsWed 21:00 — 20 commitsWed 22:00 — 6 commitsWed 23:00 — 6 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 2 commitsThu 7:00 — 0 commitsThu 8:00 — 1 commitsThu 9:00 — 2 commitsThu 10:00 — 2 commitsThu 11:00 — 4 commitsThu 12:00 — 5 commitsThu 13:00 — 5 commitsThu 14:00 — 4 commitsThu 15:00 — 3 commitsThu 16:00 — 6 commitsThu 17:00 — 4 commitsThu 18:00 — 2 commitsThu 19:00 — 1 commitsThu 20:00 — 14 commitsThu 21:00 — 15 commitsThu 22:00 — 7 commitsThu 23:00 — 24 commitsFri 0:00 — 23 commitsFri 1:00 — 2 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 3 commitsFri 8:00 — 3 commitsFri 9:00 — 9 commitsFri 10:00 — 5 commitsFri 11:00 — 3 commitsFri 12:00 — 5 commitsFri 13:00 — 1 commitsFri 14:00 — 6 commitsFri 15:00 — 8 commitsFri 16:00 — 14 commitsFri 17:00 — 6 commitsFri 18:00 — 2 commitsFri 19:00 — 2 commitsFri 20:00 — 9 commitsFri 21:00 — 9 commitsFri 22:00 — 7 commitsFri 23:00 — 2 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 7 commitsSat 9:00 — 5 commitsSat 10:00 — 8 commitsSat 11:00 — 4 commitsSat 12:00 — 0 commitsSat 13:00 — 1 commitsSat 14:00 — 1 commitsSat 15:00 — 4 commitsSat 16:00 — 1 commitsSat 17:00 — 2 commitsSat 18:00 — 4 commitsSat 19:00 — 8 commitsSat 20:00 — 8 commitsSat 21:00 — 5 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Feb 10, 2026daily#6+270
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript