Goal
Use termchart's local viewer as the supported deployment and expose it to the remote agent machine through an ngrok Agent Endpoint. Cloud Run is not required for this workflow.
Operating model
- Start the viewer on the host with a fixed port, non-default
PUSH_TOKEN, and workspace id.
- Start ngrok on the host, forwarding HTTPS to the local viewer.
- Restrict the ngrok endpoint to the remote machine's stable egress IP where possible; otherwise use an ngrok access policy the remote client can satisfy.
- Set
TERMCHART_VIEWER_URL=https://<ngrok-host>/w/<wsid> and TERMCHART_VIEWER_TOKEN=<PUSH_TOKEN> on the remote machine.
- Keep ngrok policy and all credentials outside the repository.
Termchart's bearer token protects mutation endpoints, but viewer/read endpoints are open to anyone who can reach the workspace URL. The ngrok boundary must therefore provide access control when the board contents are not public.
Repository cleanup
- Change
.github/workflows/deploy.yml from push-triggered Cloud Run deployment to manual-only, or remove it if Cloud Run is permanently retired.
- Add a local-host + ngrok operating section to
packages/viewer/README.md.
- Update release/hosting language that incorrectly treats Cloud Run as required.
Acceptance criteria
Goal
Use termchart's local viewer as the supported deployment and expose it to the remote agent machine through an ngrok Agent Endpoint. Cloud Run is not required for this workflow.
Operating model
PUSH_TOKEN, and workspace id.TERMCHART_VIEWER_URL=https://<ngrok-host>/w/<wsid>andTERMCHART_VIEWER_TOKEN=<PUSH_TOKEN>on the remote machine.Termchart's bearer token protects mutation endpoints, but viewer/read endpoints are open to anyone who can reach the workspace URL. The ngrok boundary must therefore provide access control when the board contents are not public.
Repository cleanup
.github/workflows/deploy.ymlfrom push-triggered Cloud Run deployment to manual-only, or remove it if Cloud Run is permanently retired.packages/viewer/README.md.Acceptance criteria
list,push,focus, andstatusthrough the ngrok URL.