TeamCO
TeamCO
Section titled “TeamCO”TeamCO is the IrregularChat community’s team coordination platform at team.irregulars.io. It provides real-time operational management — check-ins, task boards, schedules, announcements, and a common operating picture — for military teams, emergency response, business operations, and community groups.
Built entirely on Cloudflare Workers with no traditional server infrastructure.
Getting Started
Section titled “Getting Started”1. Log In
Section titled “1. Log In”Visit team.irregulars.io and sign in with your IrregularChat SSO account (the same credentials used for TAK, Field Notes, and other community services).
2. Create or Join a Workspace
Section titled “2. Create or Join a Workspace”A workspace is a team or organization unit (e.g., “Bragg CTO”, “Alpha Team”). You can:
- Create a new workspace and select a template during setup
- Join an existing workspace via an invite link from an admin
3. Check In
Section titled “3. Check In”Once inside a workspace, navigate to the Ops tab and check in at your current location. Your presence is visible in real-time to all workspace members on the Common Operating Picture.
Features
Section titled “Features”| Feature | Description |
|---|---|
| Check-in / Check-out | Real-time presence tracking at named locations within a workspace |
| Common Operating Picture (COP) | Live dashboard showing who is where — kiosk mode for wall displays |
| Tasks & Boards | Kanban-style task management with drag-and-drop columns |
| Schedule | Gantt-style timeline for one-off events, day/week/month/quarter/year zoom |
| Battle Rhythm | Recurring weekly calendar defining the team’s predictable operational tempo |
| Announcements & Alerts | Info/alert/SITREP posts broadcast to the workspace |
| Blockers | Track impediments blocking team progress, with resolution workflow |
| RFIs | Request For Information threads with answer tracking |
| Directory | Team member profiles and contact information |
| Quick Reference | Persistent reference cards (door codes, WiFi, sensitive resources with audit-logged reveal) |
| Polls | Quick team votes with anonymous or attributed results |
| Real-time Chat | E2E encrypted messaging, bridged to TAK |
| Notifications | Push and in-app alerts for mentions, check-in changes, and announcements |
Workspace Templates
Section titled “Workspace Templates”When creating a workspace you choose a template. Templates apply vocabulary labels and default feature sets — everything remains editable after creation.
Military (default)
Section titled “Military (default)”Full feature set with military vocabulary. Suitable for military detachments, tactical operations centers, and defense teams.
- Vocabulary: SITREP, RFI, Blocker, Check In/Out, Visitor Log, Clearances
- All features enabled
- Default locations pre-seeded with gate and door access elements
- Default board lists: To Do / In Progress / Done
Emergency Response
Section titled “Emergency Response”ICS-aligned vocabulary for flood/fire response, CERT, and search and rescue teams.
- Vocabulary: Dispatch, Status Update, On Scene/Off Scene, Incident, Request, Roster, Equipment
- Features disabled: SSN fields, clearances, polls
- Default locations: Staging Area, Forward Operating Base
- Default board lists: Incoming / Active / Resolved
Business
Section titled “Business”Standard business vocabulary for offices, shops, and project teams.
- Vocabulary: Announcement, Urgent, Clock In/Out, Issue, Question, Staff, Supplies
- Features disabled: clearances, visitor log, SSN
- Default locations: Office, Warehouse
- Default board lists: Backlog / In Progress / Done
Family
Section titled “Family”Simplified vocabulary and reduced feature set for household coordination.
- Vocabulary: Note, Reminder, Home/Away, Problem, Question, Members, Supplies
- Features disabled: clearances, SSN, visitor log, polls, inventory
- Default locations: Home
- Default board lists: To Do / Doing / Done
Architecture
Section titled “Architecture”team.irregulars.io (CF Worker) ├── Hono v4 framework (TypeScript, SSR HTML) ├── D1 database (25+ tables, SQLite) ├── KV (sessions, page cache) ├── Durable Objects (WorkspaceRoom — real-time WebSocket per workspace) ├── R2 (chat archive) ├── Queue (notification dispatch) └── OIDC auth (Authentik SSO at sso.irregularchat.com)Cloudflare Services Used
Section titled “Cloudflare Services Used”| Service | Purpose |
|---|---|
| Workers | Web portal, API routing, auth |
| D1 | All persistent data (users, workspaces, checkins, tasks, schedule) |
| KV | Sessions, page cache |
| Durable Objects | Real-time WebSocket broadcast per workspace |
| R2 | Chat message archive |
| Queues | Async notification delivery |
One Durable Object per workspace handles all real-time events (check-in, task moves, announcements, RFI answers) so every open tab reacts without multiple WebSocket connections.
Integration with TAK
Section titled “Integration with TAK”TeamCO is tightly coupled with the TAK Server. Both platforms share Authentik SSO — the same login works on both.
TAK to TeamCO
Section titled “TAK to TeamCO”When a marker is created in TAK, the system enqueues it via Cloudflare Queue and the consumer calls the TeamCO Bot API to create an announcement in the linked workspace:
- Friendly markers (
a-f-*) create TeamCO info announcements - Hostile markers (
a-h-*) create TeamCO alert announcements
TeamCO to TAK
Section titled “TeamCO to TAK”TeamCO check-ins and location data can be forwarded to the TAK ingest API, causing them to appear as position markers on the TAK map. Blockers, RFIs, and announcements can also be pushed into TAK as CoT events.
TAK Worker → tak-events Queue → TeamCO Bot API (/api/bot/announce)TeamCO Worker → TAK Ingest API (/api/ingest) → CoT broadcastSee the TAK Server page for connection details and CoT type codes.
Integration with Signal Bot
Section titled “Integration with Signal Bot”The Signal bot supports !teamco commands for workspace interaction without opening a browser:
- Create a workspace check-in from Signal
- Post a quick announcement to a linked workspace
- Receive TeamCO notifications via Signal DM when tagged or assigned
Signal notification delivery is routed through the TeamCO Queue consumer and the Signal bot’s notification API.
Battle Rhythm
Section titled “Battle Rhythm”The Battle Rhythm feature defines the recurring weekly heartbeat of a team’s operations — standing briefs, PT, reports, shift changes, and maintenance windows.
Battle rhythm is separate from the one-off schedule. Items repeat automatically every week without re-creation.
Categories
Section titled “Categories”| Category | Color | Examples |
|---|---|---|
pt | Green | Morning PT, physical fitness |
brief | Purple | Morning brief, OPORD |
report | Amber | SITREP, status roll-up |
meeting | Blue | Sync, huddle, stand-up |
shift_change | Cyan | Watch handoff, EOD |
maintenance | Slate | Vehicle checks, equipment maintenance |
admin | Gray | Leave processing, admin day |
Built-in Templates
Section titled “Built-in Templates”12 pre-built battle rhythm templates are included. Select and deselect individual items before loading — templates are suggestions, not locks.
| Template Group | Templates |
|---|---|
| Military echelons | Squad, Platoon, Company, Battalion, Brigade, Division |
| Business | Startup, Corporate, Operations Center |
| Emergency | Fire Station, EOC, Hospital Shift |
- Drag items to reorder within a time slot
- Toggle visibility: unit-wide, team-only, or admin-only
- Suspend items temporarily without deletion (
is_active = 0) - Filter by day of week or team
Schedule
Section titled “Schedule”The Schedule is a Gantt-style timeline for one-off events at specific datetimes.
| Feature | Detail |
|---|---|
| Zoom levels | Day, week, month, quarter, year |
| Row grouping | By team, with color coding |
| Interaction | Drag to create, move, or resize events |
| Event types | Training, operations, maintenance, admin, social, other |
| Visibility | All-team or team-scoped |
Battle rhythm blocks appear as a background layer so schedulers can see occupied recurring time at a glance when placing new events.
TeamCO exposes a REST API for bot integrations and automation. Full documentation is in apps/teamco/docs/API.md.
# Check in at a locationcurl -X POST https://team.irregulars.io/api/workspaces/SLUG/checkin \ -H "Cookie: teamco_session=..." \ -H "Content-Type: application/json" \ -d '{"location_id":"<location-uuid>"}'
# Post an announcement (bot API key)curl -X POST https://team.irregulars.io/api/bot/announce \ -H "Authorization: Bearer <BOT_API_KEY>" \ -H "Content-Type: application/json" \ -d '{"workspace_id":"<uuid>","type":"info","title":"Rally Point Set","body":"..."}'
# List current check-inscurl https://team.irregulars.io/api/workspaces/SLUG/checkins/active \ -H "Cookie: teamco_session=..."Security
Section titled “Security”| Control | Implementation |
|---|---|
| Authentication | OIDC PKCE via Authentik SSO |
| Guest access | Invite-link scoped to one workspace, limited permissions |
| Sensitive resources | Reveal is audit-logged with timestamp and user |
| Chat | E2E encrypted at rest |
| Workspace isolation | All queries scoped by workspace_id; cross-workspace access is not possible |
| CSRF | Token-per-session on all mutating requests |
| Rate limiting | Applied at Worker level on all API endpoints |
| Secrets | Worker secrets via wrangler secret put; never in wrangler.toml |
Related Resources
Section titled “Related Resources”- TAK Server — Shared SSO, map integration, CoT data exchange
- Authentik — SSO setup and OIDC configuration
- Cloudflare Tunnels — How community infrastructure is connected
- Signal Bot — Bot commands for TeamCO notifications