I blew away the .openhands directory and restarted...
# proj-agent-canvas
g
I blew away the .openhands directory and restarted. I'm still not able to do anything due to 401s. 😞
q
are you using windows?
g
No, on my work mac.
👀 1
I'm having OH have a look.
a
Are you getting errors like this? Cause that's what I'm seeing. And no neat little onboarding flow popped up either that I've seen in the past
g
Yes
q
hmm im unable to repro, and im unable to start convos
a
Oh! I maybe just fixed by doing
localStorage.clear()
after startup
NM, that launched the onboarding modal but still seeing the 401s
q
Which requests are hitting 401s? I think maybe an api key is misconfigured
g
Copy code
Static-server + proxy listening on <http://0.0.0.0:8000/>
  Static dir: /opt/agent-canvas/frontend
  /api/automation -> <http://127.0.0.1:18001>
  /openapi.json -> <http://127.0.0.1:18000>
  /server_info -> <http://127.0.0.1:18000>
  /sockets -> <http://127.0.0.1:18000>
  /health -> <http://127.0.0.1:18000>
  /alive -> <http://127.0.0.1:18000>
  /ready -> <http://127.0.0.1:18000>
  /redoc -> <http://127.0.0.1:18000>
  /docs -> <http://127.0.0.1:18000>
  /api -> <http://127.0.0.1:18000>
  * (default) -> static files + SPA fallback

{"asctime": "2026-05-26 18:20:33,015", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43094 - \"GET /server_info HTTP/1.1\" 200", "http.client_ip": "127.0.0.1:43094", "http.method": "GET", "http.url": "/server_info", "http.version": "1.1", "http.status_code": 200}
{"asctime": "2026-05-26 18:20:33,015", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/file/home: Unauthorized"}
{"asctime": "2026-05-26 18:20:33,015", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43090 - \"GET /api/file/home HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43090", "http.method": "GET", "http.url": "/api/file/home", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:33,017", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/conversations/search: Unauthorized"}
{"asctime": "2026-05-26 18:20:33,017", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /api/conversations/search?limit=20&sort_order=UPDATED_AT_DESC HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/api/conversations/search?limit=20&sort_order=UPDATED_AT_DESC", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:33,020", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/profiles: Unauthorized"}
{"asctime": "2026-05-26 18:20:33,020", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43102 - \"GET /api/profiles HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43102", "http.method": "GET", "http.url": "/api/profiles", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:33,024", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43102 - \"GET /server_info HTTP/1.1\" 200", "http.client_ip": "127.0.0.1:43102", "http.method": "GET", "http.url": "/server_info", "http.version": "1.1", "http.status_code": 200}
{"asctime": "2026-05-26 18:20:33,029", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43102 - \"GET /server_info HTTP/1.1\" 200", "http.client_ip": "127.0.0.1:43102", "http.method": "GET", "http.url": "/server_info", "http.version": "1.1", "http.status_code": 200}
{"asctime": "2026-05-26 18:20:33,031", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/workspaces: Unauthorized"}
{"asctime": "2026-05-26 18:20:33,032", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /api/workspaces HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/api/workspaces", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:34,029", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/profiles: Unauthorized"}
{"asctime": "2026-05-26 18:20:34,030", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /api/profiles HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/api/profiles", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:34,041", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /server_info HTTP/1.1\" 200", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/server_info", "http.version": "1.1", "http.status_code": 200}
{"asctime": "2026-05-26 18:20:34,048", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/workspaces: Unauthorized"}
{"asctime": "2026-05-26 18:20:34,048", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /api/workspaces HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/api/workspaces", "http.version": "1.1", "http.status_code": 401}
{"asctime": "2026-05-26 18:20:35,029", "levelname": "INFO", "name": "openhands.agent_server.api", "filename": "api.py", "lineno": 465, "message": "HTTPException 401 on GET /api/conversations/search: Unauthorized"}
{"asctime": "2026-05-26 18:20:35,029", "levelname": "INFO", "name": "uvicorn.access", "message": "127.0.0.1:43118 - \"GET /api/conversations/search?limit=20&sort_order=UPDATED_AT_DESC HTTP/1.1\" 401", "http.client_ip": "127.0.0.1:43118", "http.method": "GET", "http.url": "/api/conversations/search?limit=20&sort_order=UPDATED_AT_DESC", "http.version": "1.1", "http.status_code": 401}
nod 1
Pretty much everything but /server_info is giving a 401
This is just local backend.
q
can you check whether you have an env set for any of these
SESSION_API_KEY
OH_SESSION_API_KEYS_0
VITE_SESSION_API_KEY
g
Copy code
CharlesButkus@CharlesButkus-MacBook-Pro:~$ env | grep -i SESSION_API_KEY
CharlesButkus@CharlesButkus-MacBook-Pro:~$
a
I don't have those either
q
which command did you use to run agent canvas?
g
Copy code
docker run -it --rm \
  -p 8000:8000 \
  -v ~/.openhands:/home/openhands/.openhands \
  -v ${PROJECT_PATH}:/projects \
  -e NO_PROXY="" \
  -e no_proxy="" \
  <http://ghcr.io/openhands/agent-canvas:1.0.0-alpha.4|ghcr.io/openhands/agent-canvas:1.0.0-alpha.4>
Setting no_proxy was required due to the parsing error I mentioned in a previous comment.
Let me try in incognito mode.
a
This was mine (with my proj path in there):
Copy code
docker run -it --rm \
  -p 8000:8000 \
  -v ~/.openhands:/home/openhands/.openhands \
  -v $/Users/LilaGarcia/dev \
  <http://ghcr.io/openhands/agent-canvas:1.0.0-alpha.4|ghcr.io/openhands/agent-canvas:1.0.0-alpha.4>
g
Same in icognito
h
Can you try with a clone and
npm run dev
? That is closer to the npm global path at least
g
I will try, I've run it that way before.
q
Just pushed a fix for failing convo starts on main Still unable to repro docker start
g
So using npm run dev off of main I get:
@quick-window-91705, if you want to do huddle to have a look, I'm availab.e
q
gotta head out to help with nyc openhands event now for this i would suggest cleaning up all the prior caches, running a fresh npm install/build, and then running npm dev
g
OK
Have fun.
ty 1
a
So for now, test with
npm run dev
off main?
g
Seems that way. Trying to get it working now.
a
rm -rf ~/.openhands
npm install
npm run dev
On latest main, then
localStorage.clear()
in the browser, got me to a working state / I can create a conversation
👍 2