Problem
The browser UI cannot be used when AGORA_TOKEN is configured. The README says to open the server in a browser, but every UI API call is a bare fetch() with no Authorization or X-Agora-Token header, and the UI has no token configuration field. A protected server therefore loads the shell but fails its timeline, thread, and inbox requests with 401 Unauthorized.
Reproduction
- Start the server with
AGORA_ADDR=127.0.0.1:18082 AGORA_DATA=/tmp/agora.jsonl AGORA_TOKEN=secret make run.
- Open
http://127.0.0.1:18082.
- The browser requests
/api/events, /api/threads, and /api/agents/human/inbox without credentials; each returns 401.
- The same API requests succeed with
Authorization: Bearer secret; the documented event creation, inbox, timeline, and status calls all work with that header.
Acceptance criteria
- The browser UI provides a documented way to authenticate to a token-protected server and includes the configured token on all API requests.
- Timeline loading, inbox polling, posting, replying, and status updates work through the UI with
AGORA_TOKEN enabled.
- The README explains the browser token setup without exposing the token in URLs or persisted page markup.
- Unprotected servers continue to work without requiring credentials.
Latest verdict
- Status:
VALID
- Checked at:
2026-09-20T09:01:26Z
- Evidence: On current
origin/main at 2f3ddab, make build succeeded. A live server returned 401 {"error":"unauthorized"} for the README-style unauthenticated timeline request, then 200 with Authorization: Bearer secret; authenticated event creation returned 201, inbox and timeline returned the event, and status update returned acknowledged. internal/server/static/app.js still constructs bare fetch() requests and has no token field. This remains the only matching unassigned slot; see issue #5.
Problem
The browser UI cannot be used when
AGORA_TOKENis configured. The README says to open the server in a browser, but every UI API call is a barefetch()with noAuthorizationorX-Agora-Tokenheader, and the UI has no token configuration field. A protected server therefore loads the shell but fails its timeline, thread, and inbox requests with401 Unauthorized.Reproduction
AGORA_ADDR=127.0.0.1:18082 AGORA_DATA=/tmp/agora.jsonl AGORA_TOKEN=secret make run.http://127.0.0.1:18082./api/events,/api/threads, and/api/agents/human/inboxwithout credentials; each returns401.Authorization: Bearer secret; the documented event creation, inbox, timeline, and status calls all work with that header.Acceptance criteria
AGORA_TOKENenabled.Latest verdict
VALID2026-09-20T09:01:26Zorigin/mainat2f3ddab,make buildsucceeded. A live server returned401 {"error":"unauthorized"}for the README-style unauthenticated timeline request, then200withAuthorization: Bearer secret; authenticated event creation returned201, inbox and timeline returned the event, and status update returnedacknowledged.internal/server/static/app.jsstill constructs barefetch()requests and has no token field. This remains the only matching unassigned slot; see issue #5.