Skip to content
team581Public

About

AI coding agent for Team 581 software team

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

590 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bolt

Bolt Image of Bolt the dog is Team 581's Slack agent for project management, robot-code questions, and WPILOG analysis.

Junior owns Slack ingestion, durable conversations, scheduled tasks, attachments, queues, and persistent Vercel Sandboxes. Bolt adds only its own instructions, skills, and a local sandbox-preparation plugin. It does not register Junior's GitHub, memory, or other provider plugins.

Development

  1. Install Docker and the mise tools with mise install.
  2. Run vp install.
  3. Copy .env.example to .env.local and fill in the required Slack, Junior, Google OAuth, GitHub App, GCS, and AI Gateway values.
  4. Run mise run dev. Pitchfork starts local Postgres and Redis, Junior applies its SQL migrations, and Nitro starts in the background on the first available port from 3000 through 3010. Use pitchfork logs dev --tail to follow logs and pitchfork stop dev to stop it.
  5. Enable Socket Mode on the test Slack app and create an app-level token with connections:write.
  6. In a second terminal, run mise run slack:socket. The listener forwards Slack events to Junior at JUNIOR_BASE_URL, which defaults to http://localhost:3000.

Production continues to use Junior's HTTP webhook at /api/webhooks/slack; the Socket Mode listener is only a local development process.

Useful checks:

vp run check:junior
vp check
vp test
vp run build

The production release build additionally creates the cached Vercel Sandbox snapshot:

vp run build:release

Runtime

The sandbox plugin installs Java 21, GitHub CLI, jq, Cloud Storage FUSE, and wpilog-parser (including its wpilog CLI) into Junior's snapshot. It maintains /workspace/offseason-2026, mounts fetch_storage read-only at /workspace/fetch, and injects a fresh GitHub App installation token into each Bash command. That token retains code and project permissions but has read-only membership access. Student team additions and removals use the server-side github-membership plugin, which keeps its membership-write token outside the sandbox and only operates on team581/students. Coach and organization-wide membership changes are manual.

The server-side google-groups plugin lists, adds, and removes membership in students@team581.com using personal Google emails. It shares GOOGLE_SERVICE_ACCOUNT_KEY with the read-only Workspace plugins, using separate token scopes for each integration. The account owns only the student group, stays outside the sandbox, and does not use domain-wide delegation. The sandbox's read-only Fetch credential remains separate in GCS_SERVICE_ACCOUNT_KEY. Coach group changes are manual. See deployment setup and the Google Groups skill.

About

AI coding agent for Team 581 software team

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages