Repository navigation
Description
Bug Report — OpenCode Mobile no muestra sesiones aunque la API sí las devuelve
Fecha: 2026-09-06
Reportado por: newlinesat@gmail.com (Santo — 100.94.213.114)
Versiones:
- Desktop: OpenCode 1.18.18 (Electron, sidecar en 127.0.0.1:54184)
- CLI: opencode 1.17.8 (
C:\Users\newli\AppData\Roaming\npm\node_modules\opencode-ai\bin\opencode.exe) - Mobile: OpenCode Mobile (Android, screenshot 3:59)
- Túnel: Tailscale 1.102.3 — MagicDNS
santo.tail83adec.ts.net, IP100.94.213.114 - Proxy:
viewer.mjsen 0.0.0.0:4100 → 4098 (CLI conXDG_STATE_HOME=C:\Users\newli\AppData\Roaming\ai.opencode.desktop)
Resumen
El móvil se conecta correctamente por Tailscale (punto verde, Conectado 100.94.213.114:4096/4098), la API responde con 283 sesiones, pero tanto la app nativa como la web en Chrome (http://100.94.213.114:4098 y 4100) muestran Aún no hay nada / 0 proyectos y el selector DEV no responde al toque.
Evidencia de que el servidor sí tiene datos
# Desde la PC por Tailscale — sin auth en 4098 (XDG_STATE_HOME compartido con Desktop)
GET http://100.94.213.114:4098/session?limit=500 → 200, 131 sesiones (solo global)
GET http://100.94.213.114:4098/session?limit=500 vía DB directa → 283 sesiones totales
# Conteos reales en SQLite
C:\Users\newli\.local\share\opencode\opencode.db
SELECT COUNT(*) FROM session → 283
SELECT project_id, COUNT(*) FROM session GROUP BY project_id
→ global:131, 150ec89c58936c289e6509c47b4aa3f9d3e77606:115 (scalerev), 75c543dbb1f8a07c8558913a0ad51c994c3b52c6:25 (Karppaty/app), 19df588b5b7db4cb204ce7ba246c91c653498bcd:5 (RCI), d93722f872908587d81ec4c7934f43ab48f39a22:7
# Sesiones visibles como pestañas en Desktop pero ausentes en el listado global
GET /session/ses_fdae59752ffelp4p6tAnCqSDEl → 200 {"title":"Inicializar API, web y repositorio Git","project_id":"75c543dbb...","directory":"C:\\Karppaty\\app"}
GET /session/ses_f87d77c05ffepRwSy2Ieenc6zY → 200 {"title":"Phase 1 architecture planning","project_id":"19df588b...","directory":"C:\\Revenue-Customer-Intelligence\\RCI"}
# Están en el window.dat:
C:\Users\newli\AppData\Roaming\ai.opencode.desktop\opencode.window.48326b63-bab5-4bf1-bfa6-9ba3fe045086.dat
→ tabs: [ses_1fc7bb6e0ffe24dm (MCP), ses_1ad0d0acbffeuNBYEg (Revisión frontend), ses_fdae... (Inicializar API), ses_f87d... (Phase 1)]Proxy logs (móvil = 100.100.225.52) muestran que sí llega:
2026-09-06T20:37:14 GET /api/project from 100.100.225.52
2026-09-06T20:37:18 GET /api/session/ses_1fc7bb6e0ffe24dm from 100.100.225.52
2026-09-06T20:52:57 HEAD / from 100.100.225.52 → 200
Comportamiento esperado
- La app móvil y la web en
http://100.94.213.114:4098deben listar las 283 sesiones (o al menos las 4 pestañas abiertas) y permitir continuar chateando. - Tocar
DEVo el icono⊞debe abrir el selector de proyectos (7 proyectos).
Comportamiento actual
- App y web muestran
Aún no hay nada/0 proyectos. TocarDEVy⊞no hace nada. Solo el+central abre el menúActualizar / Abrir en el navegador. Abrir en el navegadorenhttp://100.94.213.114:4097y4098también queda vacío.GET /sessionsin filtro solo devuelveglobal(131), ocultando los proyectosKarppaty/appyRCI.GET /session?projectID=75c543...sigue devolviendoglobal, ignora el filtro.
Pasos para reproducir
- Desktop con 4 pestañas abiertas (ver
opencode.window.*.datarriba) y 283 sesiones enopencode.db. - Exponer
opencode serve --hostname 0.0.0.0 --port 4098 --cors *conXDG_STATE_HOMEdel Desktop por Tailscale (100.94.213.114:4098). - Conectar móvil por Tailscale (verde) a
http://100.94.213.114:4098(con o sin Basic Authopencode:29b9a9cc-1a74-4272-8a95-0e845a49afc0). - Ver lista vacía aunque
curl http://100.94.213.114:4098/session -H "Authorization: Basic ..." | jq length→ 131 yGET /session/ses_fdae...→ 200.
Hipótesis
- El endpoint
GET /sessionsolo listaproject_id=globale ignora el resto; la UI móvil filtra porDEV/projecty por eso ve 0. - La web/mobile no hace fallback a
GET /all-sessionsni itera por cadaproject_iddeGET /project. - Posible
limitpor defecto 100 y paginación rota (?limit=500sigue devolviendo 131,?offset=100devuelve otros 100, pero el total real es 283).
Entorno de red
- Tailscale Serve deshabilitado (
tailscale serve --bg 54184→Serve is not enabled on your tailnet). Se usa0.0.0.0+ Tailscale IP directa, no HTTPS MagicDNS. No es problema de TLS. - Firewall: regla para 4098 debe abrirse como admin (
New-NetFirewallRule -DisplayName "opencode-tailscale-4098" -LocalPort 4098 -Action Allow). Por Tailscale el tráfico ya llega (ver logsHEAD /).
Workaround actual
Visor custom en http://100.94.213.114:4100 que lee opencode.db directo vía Python y lista las 283 sesiones con buscador. Sirve para ver, pero no para chatear (no hay input de chat).
Qué se necesita del equipo OpenCode
- Que
GET /sessionsin filtro devuelva todas las sesiones o que la app itere por cadaproject_iddeGET /project. - Que el selector
DEV/⊞en móvil abra el listado de proyectos. - Que la web en
http://100.94.213.114:4098renderice aunque venga por Tailscale IP (revisarconnect-srcyfetchconcredentials).
Contacto / Logs adicionales
- Proxy logs:
C:\Users\newli\.config\opencode\proxy-out.logyviewer.mjsen0.0.0.0:4100 - DB:
C:\Users\newli\.local\share\opencode\opencode.db(6.2 GB)
Para reproducir rápido desde la PC:
Invoke-WebRequest http://127.0.0.1:54184/session?limit=500 -Headers @{Authorization="Basic b3BlbmNvZGU6MjliOWE5Y2MtMWE3NC00MjcyLThhOTUtMGU4NDVhNDlhZmMw"}→ 131, peroses_fdae...existe víaGET /session/ses_fdae....
Activity
github-actions commentedon Sep 7, 2026
This issue might be a duplicate of existing issues. Please check:
The root cause described in your issue (the UI maintaining a client-side project registry and only listing sessions for known projects, rather than querying all sessions) is documented in #45011 in particular. If your issue adds new details about the remote/Tailscale access scenario or the
GET /sessionproject filter being ignored, it may still be worth keeping open — but please check those issues first and consider adding your findings there if they cover the same bug.Santo911ec commentedon Sep 7, 2026
Cerrado como duplicado de #45011. Añadí detalles del escenario remoto/Tailscale en #45011 (comment). Workaround del seeder funciona también para Tailscale.