Skip to content

Mobile <Client> no muestra sesiones aunque la API sí las devuelve (283 sesiones) #47834

Closed as duplicate

Description

@Santo911ec

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, IP 100.94.213.114
  • Proxy: viewer.mjs en 0.0.0.0:4100 → 4098 (CLI con XDG_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:4098 deben listar las 283 sesiones (o al menos las 4 pestañas abiertas) y permitir continuar chateando.
  • Tocar DEV o el icono ⊞ debe abrir el selector de proyectos (7 proyectos).

Comportamiento actual

  • App y web muestran Aún no hay nada / 0 proyectos. Tocar DEV y ⊞ no hace nada. Solo el + central abre el menú Actualizar / Abrir en el navegador.
  • Abrir en el navegador en http://100.94.213.114:4097 y 4098 también queda vacío.
  • GET /session sin filtro solo devuelve global (131), ocultando los proyectos Karppaty/app y RCI. GET /session?projectID=75c543... sigue devolviendo global, ignora el filtro.

Pasos para reproducir

  1. Desktop con 4 pestañas abiertas (ver opencode.window.*.dat arriba) y 283 sesiones en opencode.db.
  2. Exponer opencode serve --hostname 0.0.0.0 --port 4098 --cors * con XDG_STATE_HOME del Desktop por Tailscale (100.94.213.114:4098).
  3. Conectar móvil por Tailscale (verde) a http://100.94.213.114:4098 (con o sin Basic Auth opencode:29b9a9cc-1a74-4272-8a95-0e845a49afc0).
  4. Ver lista vacía aunque curl http://100.94.213.114:4098/session -H "Authorization: Basic ..." | jq length → 131 y GET /session/ses_fdae... → 200.

Hipótesis

  • El endpoint GET /session solo lista project_id=global e ignora el resto; la UI móvil filtra por DEV/project y por eso ve 0.
  • La web/mobile no hace fallback a GET /all-sessions ni itera por cada project_id de GET /project.
  • Posible limit por defecto 100 y paginación rota (?limit=500 sigue devolviendo 131, ?offset=100 devuelve 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 usa 0.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 logs HEAD /).

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 /session sin filtro devuelva todas las sesiones o que la app itere por cada project_id de GET /project.
  • Que el selector DEV/⊞ en móvil abra el listado de proyectos.
  • Que la web en http://100.94.213.114:4098 renderice aunque venga por Tailscale IP (revisar connect-src y fetch con credentials).

Contacto / Logs adicionales

  • Proxy logs: C:\Users\newli\.config\opencode\proxy-out.log y viewer.mjs en 0.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, pero ses_fdae... existe vía GET /session/ses_fdae....

Activity

  1. github-actions commented on Sep 7, 2026

    @github-actions
    Contributor

    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 /session project 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.

  2. Santo911ec commented on Sep 7, 2026

    @Santo911ec
    Author

    Cerrado como duplicado de #45011. Añadí detalles del escenario remoto/Tailscale en #45011 (comment). Workaround del seeder funciona también para Tailscale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions