Skip to content

feat(office): add control plane with daemon restart, channel management, and pairing#267

Merged
jlia0 merged 1 commit intomainfrom
jlia0/davis-v2
Mar 26, 2026
Merged

feat(office): add control plane with daemon restart, channel management, and pairing#267
jlia0 merged 1 commit intomainfrom
jlia0/davis-v2

Conversation

@jlia0
Copy link
Copy Markdown
Collaborator

@jlia0 jlia0 commented Mar 26, 2026

Description

Add a unified Control Plane to TinyOffice that consolidates monitoring and management into one page with tabs (Overview, Services, Providers, Logs). Support in-container service restart via a Docker entrypoint restart loop and a new API endpoint.

Changes

  • Docker restart loop: Entrypoint uses while loop with exit code 75 signaling restart, so tinyagi restart works inside containers without killing PID 1
  • Restart API: POST /api/services/restart endpoint with delayed exit so the client gets a response before the process exits
  • CLI daemon guards: PID 1 guard in stopDaemon(), API-first restart strategy in restartDaemon()
  • Pairing API: New routes for listing, approving, revoking, and dismissing sender pairings
  • Control Plane page (/control): Tabbed UI merging dashboard into Overview (stats, sessions, agents, teams), Services (daemon, channels, pairing), Providers (built-in + custom), and Logs (queue logs + live SSE events). Disconnected state shows splash screen with editable API address.
  • Settings page: Simplified — removed API connection section (moved to control plane splash)
  • App shell: Removed connection polling and forced redirect logic
  • Agent system prompt: Include agent workspace path
  • SKILL.md: Updated tinyagi-admin skill with latest CLI commands

Testing

  • npm run build passes with no new errors
  • CLI commands (--help, version, status, agent list, channel stop) tested and working
  • Control plane renders correctly with all tabs functional

Checklist

  • PR title follows conventional commit format (type(scope): description)
  • I have tested these changes locally
  • My changes don't introduce new warnings or errors
  • I have updated documentation if needed

…nt, and pairing

- Add restart loop to Docker entrypoint (exit code 75 = restart) so the
  service can be restarted without killing the container
- Main process writes its own PID file and supports exit-code-based restart
- Add POST /api/services/restart endpoint with 100ms delayed exit
- Add PID 1 guard in CLI daemon stop, API-first restart in CLI
- Add pairing API routes (list, approve, revoke, dismiss)
- Create TinyOffice control plane page with tabs: Overview, Services,
  Providers, Logs — merging the old dashboard into a unified view
- Add agent workspace path to system prompt
- Simplify settings page (remove API connection, moved to control plane)
- Remove app-shell connection polling/redirect logic
- Update tinyagi-admin SKILL.md with latest CLI commands

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jlia0 jlia0 merged commit 664749f into main Mar 26, 2026
@jlia0 jlia0 deleted the jlia0/davis-v2 branch March 26, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant