{
  "session": {
    "id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
    "project_id": "global",
    "slug": "stellar-moon",
    "title": "Greeting",
    "directory": "/",
    "time_created": 1780666024986,
    "time_updated": 1780669892369,
    "summary_additions": 0,
    "summary_deletions": 0,
    "summary_files": 0,
    "time_archived": null,
    "starred": false
  },
  "messages": [
    {
      "id": "msg_e97f74462001lS3dZjrcL7zGD2",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666025148
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "hey"
        }
      ]
    },
    {
      "id": "msg_e97f7455a001yA0QkoGXKoJIqR",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f74462001lS3dZjrcL7zGD2",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 13174,
          "input": 13144,
          "output": 10,
          "reasoning": 20,
          "cache": {
            "write": 0,
            "read": 0
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666025306,
          "completed": 1780666027685
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user is just saying \"hey\" - a casual greeting. I'll respond concisely.",
          "time": {
            "start": 1780666027251,
            "end": 1780666027556
          }
        },
        {
          "type": "text",
          "text": "Hey! What can I help you with?",
          "time": {
            "start": 1780666027582,
            "end": 1780666027662
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 13174,
            "input": 13144,
            "output": 10,
            "reasoning": 20,
            "cache": {
              "write": 0,
              "read": 0
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f89588001aKCFi1f0bJbH7S",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666111412
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "there is an ssh tunnel on my vps rn which you are on i want to keep it open 24/7"
        }
      ]
    },
    {
      "id": "msg_e97f895e8001GjbwSipnrHqq12",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f89588001aKCFi1f0bJbH7S",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 13373,
          "input": 126,
          "output": 158,
          "reasoning": 33,
          "cache": {
            "write": 0,
            "read": 13056
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666111464,
          "completed": 1780666114522
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user wants to keep an SSH tunnel open 24/7 on their VPS. Let me first check what SSH processes are running to understand the current setup.",
          "time": {
            "start": 1780666112774,
            "end": 1780666113192
          }
        },
        {
          "type": "text",
          "text": "Let me check what's currently running:",
          "time": {
            "start": 1780666113196,
            "end": 1780666114130
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_VGSILocxkIMp9VXUzEPy7100",
          "state": {
            "status": "completed",
            "input": {
              "command": "ps aux | grep ssh",
              "description": "Check running SSH processes"
            },
            "output": "root       17475  0.0  0.1  15452  3904 ?        Ss   May27   0:24 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups\nroot      739778  0.1  0.1  16808  2284 ?        Ss   13:00   0:02 sshd: root@pts/0\nroot      740688  0.0  0.4  19508  9988 ?        Ss   13:23   0:00 sshd: root@pts/1\nroot      740788  0.0  0.1   4348  2872 ?        Ss   13:28   0:00 /bin/bash -c ps aux | grep ssh\nroot      740791  0.0  0.0   3456  1604 ?        S    13:28   0:00 grep ssh\n",
            "metadata": {
              "output": "root       17475  0.0  0.1  15452  3904 ?        Ss   May27   0:24 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups\nroot      739778  0.1  0.1  16808  2284 ?        Ss   13:00   0:02 sshd: root@pts/0\nroot      740688  0.0  0.4  19508  9988 ?        Ss   13:23   0:00 sshd: root@pts/1\nroot      740788  0.0  0.1   4348  2872 ?        Ss   13:28   0:00 /bin/bash -c ps aux | grep ssh\nroot      740791  0.0  0.0   3456  1604 ?        S    13:28   0:00 grep ssh\n",
              "exit": 0,
              "description": "Check running SSH processes",
              "truncated": false
            },
            "title": "Check running SSH processes",
            "time": {
              "start": 1780666114277,
              "end": 1780666114294
            }
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_01_JLPJIzGjbCobHtAOM4Op4917",
          "state": {
            "status": "completed",
            "input": {
              "command": "systemctl list-units --type=service --state=running | grep -i ssh 2>/dev/null; crontab -l 2>/dev/null",
              "description": "Check systemd services and crontab"
            },
            "output": "  ssh.service                 loaded active running OpenBSD Secure Shell server\n# Weather report for Turnhout at 7 AM Belgium time\n5 * * * * python3 /root/sandbox/weather_bot.py --cron\n6 * * * * python3 /root/sandbox/weather_bot.py --cron\n",
            "metadata": {
              "output": "  ssh.service                 loaded active running OpenBSD Secure Shell server\n# Weather report for Turnhout at 7 AM Belgium time\n5 * * * * python3 /root/sandbox/weather_bot.py --cron\n6 * * * * python3 /root/sandbox/weather_bot.py --cron\n",
              "exit": 0,
              "description": "Check systemd services and crontab",
              "truncated": false
            },
            "title": "Check systemd services and crontab",
            "time": {
              "start": 1780666114496,
              "end": 1780666114508
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 13373,
            "input": 126,
            "output": 158,
            "reasoning": 33,
            "cache": {
              "write": 0,
              "read": 13056
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f8a1e9001oHq615a6RYbPsQ",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f89588001aKCFi1f0bJbH7S",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 13787,
          "input": 355,
          "output": 65,
          "reasoning": 55,
          "cache": {
            "write": 0,
            "read": 13312
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666114537,
          "completed": 1780666117364
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user says there's an SSH tunnel on their VPS. I see SSH server running and SSH sessions, but no outgoing SSH tunnel. The user probably has a reverse SSH tunnel (connecting out to some other machine). Let me check for any tunnel-related processes more broadly.",
          "time": {
            "start": 1780666115663,
            "end": 1780666116500
          }
        },
        {
          "type": "text",
          "text": "I see the SSH server and active sessions, but no outgoing tunnel. What's the exact SSH command you're running for the tunnel? Or is it a reverse tunnel? Share the command and I'll help set it up as a `systemd` service so it stays alive 24/7 and auto-restarts.",
          "time": {
            "start": 1780666116506,
            "end": 1780666117344
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 13787,
            "input": 355,
            "output": 65,
            "reasoning": 55,
            "cache": {
              "write": 0,
              "read": 13312
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f90963001lWEhq2rcxte6qm",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666141049
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "ssh -L 5051:localhost:5051 root@185.228.81.207 this is the command"
        }
      ]
    },
    {
      "id": "msg_e97f9099b001110HkrpT79lN0H",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f90963001lWEhq2rcxte6qm",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 14537,
          "input": 119,
          "output": 69,
          "reasoning": 653,
          "cache": {
            "write": 0,
            "read": 13696
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666141083,
          "completed": 1780666149324
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user is running an SSH tunnel from this machine, forwarding port 5051 locally to the same port on the remote host (185.228.81.207). This is a local port forward (-L).\n\nBut wait - they're running this command ON the VPS (185.228.81.207) and connecting to itself? That doesn't make sense. Let me re-read.\n\nActually, if the user is on the VPS and runs `ssh -L 5051:localhost:5051 root@185.228.81.207`, they're SSHing from the VPS to itself (since the VPS IP is 185.228.81.207). That wouldn't normally be needed.\n\nWait, maybe the user is on a different machine and wants this tunnel to stay open from this VPS. Or maybe they're connecting FROM this VPS TO another machine at 185.228.81.207? But that's the same IP...\n\nActually, let me re-read. The user says \"there is an ssh tunnel on my vps rn which you are on\". So this VPS has IP 185.228.81.207. The command `ssh -L 5051:localhost:5051 root@185.228.81.207` would connect from the VPS to itself - which seems odd but maybe it's being run from outside the VPS (like from a local machine connecting to the VPS).\n\nHmm, but the user says \"i want to keep it open 24/7\" - so they want this tunnel to persist. Maybe they mean they run this command FROM somewhere else TO the VPS. But they're asking ME (running on the VPS) to keep it open.\n\nActually, maybe the command is:\n- From user's local machine: `ssh -L 5051:localhost:5051 root@185.228.81.207` - this forwards local port 5051 to the VPS's port 5051\n- But they want it to stay open 24/7 from the VPS side\n\nWait, that still doesn't make sense for running on the VPS.\n\nAlternatively, maybe the VPS is at a different IP, and 185.228.81.207 is some other server. Let me check the VPS's IP.\n\nActually, let me just check the VPS IP and proceed practically. The user wants to keep the tunnel alive 24/7. Let me just ask or figure out the setup. But actually, I think the most practical approach is:\n\nThe user might be running this command: `ssh -L 5051:localhost:5051 root@185.228.81.207` - which is a tunnel FROM the VPS (or wherever I am) connecting to 185.228.81.207, forwarding port 5051. If 185.228.81.207 is the VPS IP itself, this is a self-connection which is unusual.\n\nLet me check the VPS's IP to clarify.\n\nActually, let me just check the public IP of this server and then help set up the tunnel as a systemd service.",
          "time": {
            "start": 1780666142286,
            "end": 1780666148832
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_RxLE8WfCfhhYFEfQQcl67897",
          "state": {
            "status": "completed",
            "input": {
              "command": "curl -s ifconfig.me",
              "description": "Check this server's public IP"
            },
            "output": "185.228.81.207",
            "metadata": {
              "output": "185.228.81.207",
              "exit": 0,
              "description": "Check this server's public IP",
              "truncated": false
            },
            "title": "Check this server's public IP",
            "time": {
              "start": 1780666149301,
              "end": 1780666149312
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 14537,
            "input": 119,
            "output": 69,
            "reasoning": 653,
            "cache": {
              "write": 0,
              "read": 13696
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f929d9001HF1AAwe7XziMjD",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f90963001lWEhq2rcxte6qm",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 15080,
          "input": 92,
          "output": 124,
          "reasoning": 400,
          "cache": {
            "write": 0,
            "read": 14464
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666149337,
          "completed": 1780666155851
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "So this VPS's IP is 185.228.81.207. The command `ssh -L 5051:localhost:5051 root@185.228.81.207` would be connecting FROM this VPS back to itself. That's a loop.\n\nWait - maybe the user is confused about where they run this command, or maybe they meant a reverse tunnel (`-R`). Or maybe they actually run this command from their local machine TO the VPS, and they want the tunnel to stay alive from the local side.\n\nBut the user is talking to me (on the VPS) and asking to keep it open 24/7. So maybe they mean: they have a service running on port 5051 on this VPS, and they SSH FROM their local machine TO the VPS with `-L 5051:localhost:5051` to access that service. And they want this tunnel to stay open 24/7 FROM the local machine.\n\nBut since I'm ON the VPS, I can't set up something on their local machine. Unless they want me to set up the tunnel FROM the VPS to somewhere else.\n\nHmm, let me ask the user what the actual intent is, rather than guessing.\n\nActually wait - maybe the user runs this from the VPS to connect TO their local machine (or another machine at 185.228.81.207 is not actually this server). Let me check.\n\nActually the IP check confirms 185.228.81.207 IS this VPS. So `ssh -L 5051:localhost:5051 root@185.228.81.207` from this VPS is a self-connection.\n\nMaybe the user runs this from their local machine and wants to keep the tunnel alive. Since they're asking me on the VPS, maybe they want me to set up the tunnel FROM the VPS to some other machine?\n\nI should clarify with the user.",
          "time": {
            "start": 1780666150475,
            "end": 1780666154533
          }
        },
        {
          "type": "text",
          "text": "That's this VPS's own IP. `ssh -L 5051:localhost:5051 root@185.228.81.207` would connect back to itself, which isn't useful as a tunnel.\n\nDo you mean:\n- You run this **from your local machine** to the VPS (and want me to help with keepalive settings on the VPS side)?\n- Or you want the VPS to initiate an **outbound** tunnel to somewhere else?\n- Or you actually meant `-R` (reverse tunnel)?\n\nLet me clarify so I can set it up right.",
          "time": {
            "start": 1780666154540,
            "end": 1780666155832
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 15080,
            "input": 92,
            "output": 124,
            "reasoning": 400,
            "cache": {
              "write": 0,
              "read": 14464
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f991bd001YK5W5XKK4iRvUh",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666175955
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "yes rn its open in my terminal on a different pc"
        }
      ]
    },
    {
      "id": "msg_e97f991f3001CWa55lt8MkoW5G",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f991bd001YK5W5XKK4iRvUh",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 15487,
          "input": 120,
          "output": 83,
          "reasoning": 308,
          "cache": {
            "write": 0,
            "read": 14976
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666175987,
          "completed": 1780666181414
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Ah, so the user is running the SSH tunnel from their local machine to this VPS. They have a terminal open on their local PC running `ssh -L 5051:localhost:5051 root@185.228.81.207` and they want it to stay open 24/7.\n\nSince I'm on the VPS side, I can't directly control their local machine. But I can:\n\n1. Set up SSH server keepalive settings on the VPS to prevent the connection from dropping\n2. Suggest they use `autossh` on their local machine, which auto-reconnects\n3. Or suggest they set it up as a systemd service on their local machine\n\nLet me suggest the best approach. The most robust way is `autossh` on their local machine. But I can also configure the VPS's sshd to keep connections alive with `ClientAliveInterval` and `ClientAliveCountMax`.\n\nLet me ask what OS their local machine is running and offer solutions.\n\nActually, since the user is concise and likes efficiency, let me just give them the practical solutions:\n\n1. On the VPS side: enable TCPKeepAlive and set ClientAliveInterval in sshd_config\n2. On the local side: use autossh, or configure the SSH client with ServerAliveInterval\n\nBoth sides help, but the most reliable approach is autossh on the local machine. Let me suggest this and offer to configure the server side.",
          "time": {
            "start": 1780666177169,
            "end": 1780666180636
          }
        },
        {
          "type": "text",
          "text": "Got it. Two things to make it bulletproof:\n\n**1. Server-side (this VPS)** – set keepalive so the connection doesn't drop:",
          "time": {
            "start": 1780666180646,
            "end": 1780666181338
          }
        },
        {
          "type": "tool",
          "tool": "read",
          "callID": "call_00_AcbkRAsKWW79lyA0GdMZ5278",
          "state": {
            "status": "completed",
            "input": {
              "filePath": "/etc/ssh/sshd_config"
            },
            "output": "<path>/etc/ssh/sshd_config</path>\n<type>file</type>\n<content>\n1: \n2: # This is the sshd server system-wide configuration file.  See\n3: # sshd_config(5) for more information.\n4: \n5: # This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\n6: \n7: # The strategy used for options in the default sshd_config shipped with\n8: # OpenSSH is to specify options with their default value where\n9: # possible, but leave them commented.  Uncommented options override the\n10: # default value.\n11: \n12: Include /etc/ssh/sshd_config.d/*.conf\n13: \n14: #Port 22\n15: #AddressFamily any\n16: #ListenAddress 0.0.0.0\n17: #ListenAddress ::\n18: \n19: #HostKey /etc/ssh/ssh_host_rsa_key\n20: #HostKey /etc/ssh/ssh_host_ecdsa_key\n21: #HostKey /etc/ssh/ssh_host_ed25519_key\n22: \n23: # Ciphers and keying\n24: #RekeyLimit default none\n25: \n26: # Logging\n27: #SyslogFacility AUTH\n28: #LogLevel INFO\n29: \n30: # Authentication:\n31: \n32: #LoginGraceTime 2m\n33: PermitRootLogin yes\n34: #StrictModes yes\n35: #MaxAuthTries 6\n36: #MaxSessions 10\n37: \n38: #PubkeyAuthentication yes\n39: \n40: # Expect .ssh/authorized_keys2 to be disregarded by default in future.\n41: #AuthorizedKeysFile\t.ssh/authorized_keys .ssh/authorized_keys2\n42: \n43: #AuthorizedPrincipalsFile none\n44: \n45: #AuthorizedKeysCommand none\n46: #AuthorizedKeysCommandUser nobody\n47: \n48: # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts\n49: #HostbasedAuthentication no\n50: # Change to yes if you don't trust ~/.ssh/known_hosts for\n51: # HostbasedAuthentication\n52: #IgnoreUserKnownHosts no\n53: # Don't read the user's ~/.rhosts and ~/.shosts files\n54: #IgnoreRhosts yes\n55: \n56: # To disable tunneled clear text passwords, change to no here!\n57: #PasswordAuthentication yes\n58: #PermitEmptyPasswords no\n59: \n60: # Change to yes to enable challenge-response passwords (beware issues with\n61: # some PAM modules and threads)\n62: KbdInteractiveAuthentication no\n63: \n64: # Kerberos options\n65: #KerberosAuthentication no\n66: #KerberosOrLocalPasswd yes\n67: #KerberosTicketCleanup yes\n68: #KerberosGetAFSToken no\n69: \n70: # GSSAPI options\n71: #GSSAPIAuthentication no\n72: #GSSAPICleanupCredentials yes\n73: #GSSAPIStrictAcceptorCheck yes\n74: #GSSAPIKeyExchange no\n75: \n76: # Set this to 'yes' to enable PAM authentication, account processing,\n77: # and session processing. If this is enabled, PAM authentication will\n78: # be allowed through the KbdInteractiveAuthentication and\n79: # PasswordAuthentication.  Depending on your PAM configuration,\n80: # PAM authentication via KbdInteractiveAuthentication may bypass\n81: # the setting of \"PermitRootLogin without-password\".\n82: # If you just want the PAM account and session checks to run without\n83: # PAM authentication, then enable this but set PasswordAuthentication\n84: # and KbdInteractiveAuthentication to 'no'.\n85: UsePAM yes\n86: \n87: #AllowAgentForwarding yes\n88: #AllowTcpForwarding yes\n89: #GatewayPorts no\n90: X11Forwarding yes\n91: #X11DisplayOffset 10\n92: #X11UseLocalhost yes\n93: #PermitTTY yes\n94: PrintMotd no\n95: #PrintLastLog yes\n96: #TCPKeepAlive yes\n97: #PermitUserEnvironment no\n98: #Compression delayed\n99: #ClientAliveInterval 0\n100: #ClientAliveCountMax 3\n101: #UseDNS no\n102: #PidFile /run/sshd.pid\n103: #MaxStartups 10:30:100\n104: #PermitTunnel no\n105: #ChrootDirectory none\n106: #VersionAddendum none\n107: \n108: # no default banner path\n109: #Banner none\n110: \n111: # Allow client to pass locale environment variables\n112: AcceptEnv LANG LC_*\n113: \n114: # override default of no subsystems\n115: Subsystem\tsftp\t/usr/lib/openssh/sftp-server\n116: \n117: # Example of overriding settings on a per-user basis\n118: #Match User anoncvs\n119: #\tX11Forwarding no\n120: #\tAllowTcpForwarding no\n121: #\tPermitTTY no\n122: #\tForceCommand cvs server\n\n(End of file - total 122 lines)\n</content>",
            "metadata": {
              "preview": "\n# This is the sshd server system-wide configuration file.  See\n# sshd_config(5) for more information.\n\n# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\n\n# The strategy used for options in the default sshd_config shipped with\n# OpenSSH is to specify options with their default value where\n# possible, but leave them commented.  Uncommented options override the\n# default value.\n\nInclude /etc/ssh/sshd_config.d/*.conf\n\n#Port 22\n#AddressFamily any\n#ListenAddress 0.0.0.0\n#ListenAddress ::\n\n#HostKey /etc/ssh/ssh_host_rsa_key\n#HostKey /etc/ssh/ssh_host_ecdsa_key",
              "truncated": false,
              "loaded": []
            },
            "title": "etc/ssh/sshd_config",
            "time": {
              "start": 1780666181309,
              "end": 1780666181395
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 15487,
            "input": 120,
            "output": 83,
            "reasoning": 308,
            "cache": {
              "write": 0,
              "read": 14976
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97f9a7310011WVu6a9qsMTFEQ",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97f991bd001YK5W5XKK4iRvUh",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 17138,
          "input": 1372,
          "output": 238,
          "reasoning": 168,
          "cache": {
            "write": 0,
            "read": 15360
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666181425,
          "completed": 1780666185993
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Okay, the sshd_config has `ClientAliveInterval 0` (commented out, so default). I should set up keepalive on the server side. But the most effective solution is actually on the client side (the user's local machine).\n\nLet me suggest the best approach:\n\n1. **On local machine (client side)**: Use `autossh` which auto-reconnects when the connection drops. Or add `ServerAliveInterval=60` and `ServerAliveCountMax=3` to the SSH config.\n2. **On VPS (server side)**: Add `ClientAliveInterval 60` and `ClientAliveCountMax 3` to sshd_config.\n\nThe autossh approach is the gold standard for 24/7 tunnels. Let me suggest it.",
          "time": {
            "start": 1780666182532,
            "end": 1780666184088
          }
        },
        {
          "type": "text",
          "text": "That clears it up. Here's what I recommend:\n\n**On your local machine (most important)** – use `autossh` which auto-reconnects on drop:\n```bash\nautossh -M 0 -o \"ServerAliveInterval 60\" -o \"ServerAliveCountMax 3\" -L 5051:localhost:5051 root@185.228.81.207\n```\n\nEven better, wrap it in a systemd service on your local machine for true 24/7 uptime:\n```ini\n[Unit]\nDescription=SSH tunnel\nAfter=network.target\n\n[Service]\nRestart=always\nRestartSec=10\nExecStart=/usr/bin/ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -L 5051:localhost:5051 root@185.228.81.207\n\n[Install]\nWantedBy=multi-user.target\n```\n\n**On this VPS side** – I can enable keepalive to prevent idle disconnects. Want me to add `ClientAliveInterval 60` to sshd_config and reload?",
          "time": {
            "start": 1780666184093,
            "end": 1780666185975
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 17138,
            "input": 1372,
            "output": 238,
            "reasoning": 168,
            "cache": {
              "write": 0,
              "read": 15360
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fa02f8001nIZaVh9GGTZF2K",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666204957
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "uhm what does that mean"
        }
      ]
    },
    {
      "id": "msg_e97fa0338001gLM6raag80YYAO",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fa02f8001nIZaVh9GGTZF2K",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 17393,
          "input": 124,
          "output": 161,
          "reasoning": 84,
          "cache": {
            "write": 0,
            "read": 17024
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666204984,
          "completed": 1780666209023
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user is confused by the technical details. Let me simplify it.\n\nThey want their SSH tunnel to stay open 24/7. The simplest way is:\n\n1. On their local machine, install `autossh` and use it instead of plain `ssh`. It auto-reconnects.\n2. On the VPS, I just need to enable keepalive.\n\nLet me break it down very simply.",
          "time": {
            "start": 1780666206350,
            "end": 1780666207362
          }
        },
        {
          "type": "text",
          "text": "No worries. The short version:\n\n**Your terminal** → VPS tunnel. If your terminal closes or network blips, the tunnel dies. You need something that keeps it alive and reconnects automatically.\n\n**Two simple things:**\n1. On your **local PC** – replace `ssh` with `autossh` (just install it, same command). It auto-reconnects when the tunnel drops.\n2. On **this VPS** – I can tweak a setting so SSH doesn't kill idle connections.\n\nWant me to just set up the VPS side? For the local PC, install `autossh` and run:\n```bash\nautossh -L 5051:localhost:5051 root@185.228.81.207\n```",
          "time": {
            "start": 1780666207366,
            "end": 1780666209009
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 17393,
            "input": 124,
            "output": 161,
            "reasoning": 84,
            "cache": {
              "write": 0,
              "read": 17024
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fa766c00198hwa027v2qxrU",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666234494
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "but what if i close my pc"
        }
      ]
    },
    {
      "id": "msg_e97fa76aa001TSLlVZqY6Ya6y2",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fa766c00198hwa027v2qxrU",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 18056,
          "input": 295,
          "output": 101,
          "reasoning": 636,
          "cache": {
            "write": 0,
            "read": 17024
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666234538,
          "completed": 1780666243678
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user is asking what happens if they close their PC. They're right - if they're running autossh/ssh on their local machine and the PC goes to sleep or shuts down, the tunnel will die.\n\nThey need the tunnel to be initiated FROM this VPS to somewhere else, OR they need a different machine that stays on 24/7 to host the tunnel.\n\nWait - maybe the real question is: what service is on port 5051, and who needs to access it? Let me think...\n\nIf they have a service on port 5051 on this VPS and they want to access it from their local machine, then the tunnel direction is: local machine → VPS. In that case, if their PC is off, the tunnel is obviously down and they can't access anything.\n\nBut if they want it accessible 24/7 regardless of their PC being on, they could:\n- Run the service directly on port 5051 on the VPS (no tunnel needed if the service is already on the VPS)\n- Or if the service is on their local machine and they want to expose it 24/7, they'd need the VPS to connect TO their local machine (reverse tunnel `-R`), but then their PC still needs to be on...\n\nWait, maybe I'm confused. Let me re-read: `ssh -L 5051:localhost:5051 root@185.228.81.207`\n\nThis means: forward localhost:5051 on the client side → localhost:5051 on the VPS side. So the service is running on the VPS (port 5051), and they access it from their local machine through the tunnel.\n\nSo actually... if the service is already on the VPS, there's no tunnel needed at all! They could just access `185.228.81.207:5051` directly, unless it's bound to localhost only.\n\nSo the tunnel exists because the service on the VPS only listens on localhost (127.0.0.1:5051), not on the public IP. The SSH tunnel lets them access it from their local machine via `localhost:5051`.\n\nIf their PC is off, they can't access it (obviously). But the tunnel only needs to exist when they want to use it. Or they could make the service listen on 0.0.0.0 and access it directly (if that's safe).\n\nActually, the user's question is simpler than I'm making it. They want the tunnel to stay open 24/7 so they can access the service anytime. But if their PC is off... they can't.\n\nThe real solution: if the service on the VPS only listens on localhost, we can either:\n1. Make it listen on 0.0.0.0 so they can access `http://185.228.81.207:5051` directly\n2. Or use a reverse proxy like nginx/caddy on the VPS\n\nWhat service is on port 5051? Let me ask or check.",
          "time": {
            "start": 1780666235963,
            "end": 1780666242568
          }
        },
        {
          "type": "text",
          "text": "Then the tunnel can't stay up if your PC is off – that's just how it works.\n\nBut wait — `ssh -L 5051:localhost:5051` means the service on **this VPS** only listens on `localhost`. You're using the tunnel to reach it from your PC. If that's the case, you don't need a tunnel at all — we can just make the service accessible directly.\n\nWhat's running on port 5051 on this VPS?",
          "time": {
            "start": 1780666242572,
            "end": 1780666243660
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 18056,
            "input": 295,
            "output": 101,
            "reasoning": 636,
            "cache": {
              "write": 0,
              "read": 17024
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97facc9d001zMpCtu8DF602Vd",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666256580
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "you"
        }
      ]
    },
    {
      "id": "msg_e97facceb001LyvaAIfDYAZQT7",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97facc9d001zMpCtu8DF602Vd",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 17556,
          "input": 144,
          "output": 95,
          "reasoning": 37,
          "cache": {
            "write": 0,
            "read": 17280
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666256619,
          "completed": 1780666258872
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user is saying \"you\" - meaning I (opencode) am running on port 5051. Let me check what's on port 5051 on this VPS.",
          "time": {
            "start": 1780666257813,
            "end": 1780666258244
          }
        },
        {
          "type": "text",
          "text": "Ah, *I'm* on port 5051! Let me check what service this is:",
          "time": {
            "start": 1780666258249,
            "end": 1780666258859
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_ru2EshCW3w4Dm5hZJlHU1100",
          "state": {
            "status": "completed",
            "input": {
              "command": "ss -tlnp | grep 5051",
              "description": "Check what's listening on port 5051"
            },
            "output": "LISTEN 0      128        127.0.0.1:5051       0.0.0.0:*    users:((\"opencode\",pid=740662,fd=17))                   \n",
            "metadata": {
              "output": "LISTEN 0      128        127.0.0.1:5051       0.0.0.0:*    users:((\"opencode\",pid=740662,fd=17))                   \n",
              "exit": 0,
              "description": "Check what's listening on port 5051",
              "truncated": false
            },
            "title": "Check what's listening on port 5051",
            "time": {
              "start": 1780666258828,
              "end": 1780666258839
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 17556,
            "input": 144,
            "output": 95,
            "reasoning": 37,
            "cache": {
              "write": 0,
              "read": 17280
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fad5c2001QlBdWsiVHm2hoj",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97facc9d001zMpCtu8DF602Vd",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 17901,
          "input": 76,
          "output": 98,
          "reasoning": 191,
          "cache": {
            "write": 0,
            "read": 17536
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666258882,
          "completed": 1780666263136
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "So opencode is listening on port 5051 only on localhost (127.0.0.1). The user was running an SSH tunnel from their PC to access it.\n\nThere are a few options:\n\n1. **Bind opencode to 0.0.0.0** so it's accessible directly on the VPS's IP without a tunnel. But then anyone can access it (need to secure it).\n2. **Keep the tunnel approach** but use autossh/systemd on their local PC.\n3. **Move opencode to listen on the public IP** or use a reverse proxy with auth.\n\nSince they can't keep their PC on 24/7, option 1 would work if I bind opencode to 0.0.0.0 so they can access it directly. But security-wise, opencode might have authentication built in.\n\nLet me check how opencode is currently configured/launched.",
          "time": {
            "start": 1780666260040,
            "end": 1780666262129
          }
        },
        {
          "type": "text",
          "text": "I'm bound to `127.0.0.1:5051` — that's why you needed the tunnel.\n\nSince your PC can't stay on 24/7, the easiest fix: bind me to `0.0.0.0` so you can reach me directly at `http://185.228.81.207:5051`.\n\nBut that means anyone could try hitting this port. Does opencode need auth, or is this just for you?",
          "time": {
            "start": 1780666262132,
            "end": 1780666263125
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 17901,
            "input": 76,
            "output": 98,
            "reasoning": 191,
            "cache": {
              "write": 0,
              "read": 17536
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fb45f3001NqAETPTeIKAC0N",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666287620
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "it definetely needs security"
        }
      ]
    },
    {
      "id": "msg_e97fb462a001AbK9l23O2oSIKC",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fb45f3001NqAETPTeIKAC0N",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 18414,
          "input": 119,
          "output": 170,
          "reasoning": 333,
          "cache": {
            "write": 0,
            "read": 17792
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666287658,
          "completed": 1780666293877
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user wants security. Options:\n\n1. **SSH key-only binding** – bind to 0.0.0.0 but use SSH key auth (opencode might support that)\n2. **Reverse proxy with auth** – put nginx/caddy in front with basic auth or a firewall\n3. **UFW/iptables** – restrict port 5051 to only the user's IP\n4. **Keep the tunnel** but set it up from the VPS itself (reverse tunnel) to some always-on intermediary\n\nActually, the cleanest solution for \"needs security\" + \"PC can't stay on 24/7\" is one of:\n\n- **Bind to 0.0.0.0 but restrict by IP** with a firewall (if the user has a static IP)\n- **Bind to 0.0.0.0 with a reverse proxy** that adds authentication (basic auth, etc.)\n- **Use a cheap always-on VPS or Raspberry Pi** as the tunnel endpoint\n\nWait, another option: the user could set up the SSH tunnel **from the VPS** to their local machine (reverse tunnel `-R`), but that requires their PC to be on.\n\nOr: they could use a cheap always-on mini server like a Raspberry Pi at home, or a low-end VPS as a jump box.\n\nOr simplest: bind to 0.0.0.0 but add a simple auth layer. Let me check what opencode supports in terms of auth.\n\nActually, let me look at the opencode process and config to see if it has any auth mechanism.",
          "time": {
            "start": 1780666289139,
            "end": 1780666292806
          }
        },
        {
          "type": "text",
          "text": "Let me check what auth options opencode has:",
          "time": {
            "start": 1780666292811,
            "end": 1780666293818
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_WIWfP9hKynbm103Ixd0X5019",
          "state": {
            "status": "completed",
            "input": {
              "command": "cat /root/.config/opencode/opencode.json 2>/dev/null || cat /root/.opencode.json 2>/dev/null || echo \"No config found at default locations\"",
              "description": "Check opencode config"
            },
            "output": "No config found at default locations\n",
            "metadata": {
              "output": "No config found at default locations\n",
              "exit": 0,
              "description": "Check opencode config",
              "truncated": false
            },
            "title": "Check opencode config",
            "time": {
              "start": 1780666293494,
              "end": 1780666293509
            }
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_01_zx3Cz5fwCP9QN1VISDq77652",
          "state": {
            "status": "completed",
            "input": {
              "command": "ps aux | grep opencode | grep -v grep",
              "description": "Check how opencode was launched"
            },
            "output": "root      729968  3.0 13.8 74456048 290320 ?     Ssl  Jun04  30:12 opencode serve --port 4096\nroot      739958  0.2  5.1 11843080 107340 ?     Ssl  13:10   0:03 node /root/.npm/_npx/96ab324e177a8c2c/node_modules/@grinev/opencode-telegram-bot/dist/cli.js start\nroot      740368  0.1  2.9 1335048 61524 ?       Sl   13:14   0:01 npm exec @different-ai/opencode-browser agent-gateway\nroot      740381  0.0  0.0   2876    96 ?        S    13:14   0:00 sh -c opencode-browser agent-gateway\nroot      740382  0.0  1.5 1045268 32588 ?       Sl   13:14   0:00 node /root/.npm/_npx/8096bb92ae86a312/node_modules/.bin/opencode-browser agent-gateway\nroot      740389  0.0  1.4 749604 30424 ?        Sl   13:14   0:00 /usr/bin/node /root/.npm/_npx/8096bb92ae86a312/node_modules/@different-ai/opencode-browser/bin/agent-gateway.cjs\nroot      740540 15.3 26.7 75318376 562008 pts/0 Sl+  13:19   1:47 opencode -s ses_1681db4dfffeqedFZkdl3074Sd\nroot      740662 10.0 16.6 74778084 349460 ?     Rsl  13:22   0:52 /root/.opencode/bin/opencode serve --port 5051 --print-logs\n",
            "metadata": {
              "output": "root      729968  3.0 13.8 74456048 290320 ?     Ssl  Jun04  30:12 opencode serve --port 4096\nroot      739958  0.2  5.1 11843080 107340 ?     Ssl  13:10   0:03 node /root/.npm/_npx/96ab324e177a8c2c/node_modules/@grinev/opencode-telegram-bot/dist/cli.js start\nroot      740368  0.1  2.9 1335048 61524 ?       Sl   13:14   0:01 npm exec @different-ai/opencode-browser agent-gateway\nroot      740381  0.0  0.0   2876    96 ?        S    13:14   0:00 sh -c opencode-browser agent-gateway\nroot      740382  0.0  1.5 1045268 32588 ?       Sl   13:14   0:00 node /root/.npm/_npx/8096bb92ae86a312/node_modules/.bin/opencode-browser agent-gateway\nroot      740389  0.0  1.4 749604 30424 ?        Sl   13:14   0:00 /usr/bin/node /root/.npm/_npx/8096bb92ae86a312/node_modules/@different-ai/opencode-browser/bin/agent-gateway.cjs\nroot      740540 15.3 26.7 75318376 562008 pts/0 Sl+  13:19   1:47 opencode -s ses_1681db4dfffeqedFZkdl3074Sd\nroot      740662 10.0 16.6 74778084 349460 ?     Rsl  13:22   0:52 /root/.opencode/bin/opencode serve --port 5051 --print-logs\n",
              "exit": 0,
              "description": "Check how opencode was launched",
              "truncated": false
            },
            "title": "Check how opencode was launched",
            "time": {
              "start": 1780666293843,
              "end": 1780666293865
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 18414,
            "input": 119,
            "output": 170,
            "reasoning": 333,
            "cache": {
              "write": 0,
              "read": 17792
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fb5e7f001rGtR2un8NkrXXp",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fb45f3001NqAETPTeIKAC0N",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 19315,
          "input": 569,
          "output": 85,
          "reasoning": 357,
          "cache": {
            "write": 0,
            "read": 18304
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666293887,
          "completed": 1780666300932
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "I see there's also `opencode serve --port 4096` running. And the one on 5051 is `opencode serve --port 5051 --print-logs`.\n\nThe Telegram bot is also running, which means the user can control opencode via Telegram.\n\nSo the user needs secure access to opencode on port 5051 without leaving their PC on 24/7. Options:\n\n1. **SSH key authentication**: opencode might support `--ssh-keys` flag to authenticate via SSH keys\n2. **Bind to specific interface**: if the user has a known IP, use UFW\n3. **Use a cheap always-on VPS / Oracle free tier** as a tunnel endpoint\n4. **Use Cloudflare Tunnel** (cloudflared) - free, secure, no open ports\n5. **Use Tailscale/wireguard** - creates a private network overlay\n\nActually, the simplest and most secure approach: **bind to 0.0.0.0 but use opencode's own auth**. Let me check if opencode supports `--auth-token` or similar.\n\nLet me look at the help for `opencode serve`.\n\nActually, let me think about what's most practical:\n\n**Option A: Cloudflare Tunnel** – install `cloudflared`, creates an HTTPS tunnel with auth. No open ports. User accesses via a `trycloudflare.com` URL or their own domain.\n\n**Option B: Tailscale** – install tailscale on VPS and PC, access via Tailscale IP. Encrypted, requires auth.\n\n**Option C: SSH key auth on opencode** – opencode might have built-in SSH key authentication.\n\nLet me check if opencode has auth features.",
          "time": {
            "start": 1780666295003,
            "end": 1780666299013
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_K3B2NBiDNS9WireTy7949335",
          "state": {
            "status": "completed",
            "input": {
              "command": "opencode serve --help 2>/dev/null || opencode help 2>/dev/null | head -40",
              "description": "Check opencode auth options"
            },
            "output": "(no output)",
            "metadata": {
              "output": "(no output)",
              "exit": 0,
              "description": "Check opencode auth options",
              "truncated": false
            },
            "title": "Check opencode auth options",
            "time": {
              "start": 1780666299363,
              "end": 1780666300918
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 19315,
            "input": 569,
            "output": 85,
            "reasoning": 357,
            "cache": {
              "write": 0,
              "read": 18304
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fb7a10001BBjwzQK229lp8U",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fb45f3001NqAETPTeIKAC0N",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 19412,
          "input": 129,
          "output": 68,
          "reasoning": 15,
          "cache": {
            "write": 0,
            "read": 19200
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666300944,
          "completed": 1780666304090
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "No output. Let me try another approach to see opencode's options.",
          "time": {
            "start": 1780666302084,
            "end": 1780666302394
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_WspUqVlWjYVLFUOdEnJw0771",
          "state": {
            "status": "completed",
            "input": {
              "command": "opencode help 2>&1",
              "description": "Check opencode help"
            },
            "output": "\n\nCommands:\n  opencode completion          generate shell completion script\n  opencode acp                 start ACP (Agent Client Protocol) server\n  opencode mcp                 manage MCP (Model Context Protocol) servers\n  opencode [project]           start opencode tui                                          [default]\n  opencode attach <url>        attach to a running opencode server\n  opencode run [message..]     run opencode with a message\n  opencode debug               debugging and troubleshooting tools\n  opencode providers           manage AI providers and credentials                   [aliases: auth]\n  opencode agent               manage agents\n  opencode upgrade [target]    upgrade opencode to the latest or a specific version\n  opencode uninstall           uninstall opencode and remove all related files\n  opencode serve               starts a headless opencode server\n  opencode web                 start opencode server and open web interface\n  opencode models [provider]   list all available models\n  opencode stats               show token usage and cost statistics\n  opencode export [sessionID]  export session data as JSON\n  opencode import <file>       import session data from JSON file or URL\n  opencode github              manage GitHub agent\n  opencode pr <number>         fetch and checkout a GitHub PR branch, then run opencode\n  opencode session             manage sessions\n  opencode plugin <module>     install plugin and update config                      [aliases: plug]\n  opencode db                  database tools\n\nPositionals:\n  project  path to start opencode in                                                        [string]\n\nOptions:\n  -h, --help         show help                                                             [boolean]\n  -v, --version      show version number                                                   [boolean]\n      --print-logs   print logs to stderr                                                  [boolean]\n      --log-level    log level                  [string] [choices: \"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]\n      --pure         run without external plugins                                          [boolean]\n      --port         port to listen on                                         [number] [default: 0]\n      --hostname     hostname to listen on                           [string] [default: \"127.0.0.1\"]\n      --mdns         enable mDNS service discovery (defaults hostname to 0.0.0.0)\n                                                                          [boolean] [default: false]\n      --mdns-domain  custom domain name for mDNS service (default: opencode.local)\n                                                                [string] [default: \"opencode.local\"]\n      --cors         additional domains to allow for CORS                      [array] [default: []]\n  -m, --model        model to use in the format of provider/model                           [string]\n  -c, --continue     continue the last session                                             [boolean]\n  -s, --session      session id to continue                                                 [string]\n      --fork         fork the session when continuing (use with --continue or --session)   [boolean]\n      --prompt       prompt to use                                                          [string]\n      --agent        agent to use                                                           [string]\n",
            "metadata": {
              "output": "\n\nCommands:\n  opencode completion          generate shell completion script\n  opencode acp                 start ACP (Agent Client Protocol) server\n  opencode mcp                 manage MCP (Model Context Protocol) servers\n  opencode [project]           start opencode tui                                          [default]\n  opencode attach <url>        attach to a running opencode server\n  opencode run [message..]     run opencode with a message\n  opencode debug               debugging and troubleshooting tools\n  opencode providers           manage AI providers and credentials                   [aliases: auth]\n  opencode agent               manage agents\n  opencode upgrade [target]    upgrade opencode to the latest or a specific version\n  opencode uninstall           uninstall opencode and remove all related files\n  opencode serve               starts a headless opencode server\n  opencode web                 start opencode server and open web interface\n  opencode models [provider]   list all available models\n  opencode stats               show token usage and cost statistics\n  opencode export [sessionID]  export session data as JSON\n  opencode import <file>       import session data from JSON file or URL\n  opencode github              manage GitHub agent\n  opencode pr <number>         fetch and checkout a GitHub PR branch, then run opencode\n  opencode session             manage sessions\n  opencode plugin <module>     install plugin and update config                      [aliases: plug]\n  opencode db                  database tools\n\nPositionals:\n  project  path to start opencode in                                                        [string]\n\nOptions:\n  -h, --help         show help                                                             [boolean]\n  -v, --version      show version number                                                   [boolean]\n      --print-logs   print logs to stderr                                                  [boolean]\n      --log-level    log level                  [string] [choices: \"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]\n      --pure         run without external plugins                                          [boolean]\n      --port         port to listen on                                         [number] [default: 0]\n      --hostname     hostname to listen on                           [string] [default: \"127.0.0.1\"]\n      --mdns         enable mDNS service discovery (defaults hostname to 0.0.0.0)\n                                                                          [boolean] [default: false]\n      --mdns-domain  custom domain name for mDNS service (default: opencode.local)\n                                                                [string] [default: \"opencode.local\"]\n      --cors         additional domains to allow for CORS                      [array] [default: []]\n  -m, --model        model to use in the format of provider/model                           [string]\n  -c, --continue     continue the last session                                             [boolean]\n  -s, --session      session id to continue                                                 [string]\n      --fork         fork the session when continuing (use with --continue or --session)   [boolean]\n      --prompt       prompt to use                                                          [string]\n      --agent        agent to use                                                           [string]\n",
              "exit": 0,
              "description": "Check opencode help",
              "truncated": false
            },
            "title": "Check opencode help",
            "time": {
              "start": 1780666304015,
              "end": 1780666304059
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 19412,
            "input": 129,
            "output": 68,
            "reasoning": 15,
            "cache": {
              "write": 0,
              "read": 19200
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fb8665001n8FQN7BSjuDAEL",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fb45f3001NqAETPTeIKAC0N",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 20767,
          "input": 737,
          "output": 186,
          "reasoning": 516,
          "cache": {
            "write": 0,
            "read": 19328
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666304101,
          "completed": 1780666312673
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "I see `--hostname` defaults to `127.0.0.1` and `--mdns` sets it to `0.0.0.0`. There's no built-in auth token or SSH key option visible in `opencode help`. The `opencode providers` command is about AI providers, not auth.\n\nSo opencode doesn't have built-in auth for the serve mode. The user needs:\n\n1. **The tunnel approach** - secure but requires keepalive\n2. **A proxy with auth** - nginx with basic auth or Cloudflare Tunnel\n3. **VPN/Tailscale** - private network overlay\n\nSince the user's PC can't stay on 24/7, here are the practical options:\n\n**Best option: Cloudflare Tunnel** - free, dead simple, no open ports, auth built-in:\n```bash\ncloudflared tunnel --url http://localhost:5051\n```\nBut this gives a random URL that changes each time.\n\nOr use a fixed Cloudflare Tunnel with their own domain.\n\n**Second best: Tailscale** - install on VPS and all devices, access via Tailscale IP. Very secure, no open ports.\n\n**Third: UFW restrict to known IPs** - if the user has a static IP, but it sounds like they don't.\n\n**Fourth: Set up the tunnel on the VPS to connect to a cheap always-on VPS** - overly complex.\n\nLet me suggest Tailscale or Cloudflare Tunnel as the most practical options. Tailscale is probably simplest - install it, it creates a secure mesh network, then access via the Tailscale IP.\n\nActually, let me think about what's simplest for the user. They seem non-technical (\"uhm what does that mean\"). Tailscale is super easy:\n```bash\ncurl -fsSL https://tailscale.com/install.sh | sh\ntailscale up\n```\nThen they authenticate via browser, and can access the VPS via the Tailscale IP. Then we bind opencode to the Tailscale IP or 0.0.0.0 but only accessible via the Tailscale network.\n\nOr Cloudflare Tunnel (cloudflared):\n```bash\ncloudflared tunnel --url http://localhost:5051\n```\nIt gives a URL. But it needs to be running.\n\nCloudflare Tunnel plus a systemd service that auto-starts would be solid. But the user needs a Cloudflare account.\n\nTailscale might be easiest. Let me suggest both and let them pick.",
          "time": {
            "start": 1780666305126,
            "end": 1780666311009
          }
        },
        {
          "type": "text",
          "text": "opencode doesn't have built-in auth. Here are your best options to make it accessible 24/7 **securely** without keeping your PC on:\n\n**Option A: Tailscale** (easiest) – creates a private network between your devices:\n```bash\n# on VPS\ncurl -fsSL https://tailscale.com/install.sh | sh\ntailscale up\n```\nThen access me at `http://<tailscale-ip>:5051` from any device. No open ports, encrypted, auth required.\n\n**Option B: Cloudflare Tunnel** – also free, no open ports:\n```bash\n# on VPS\ncloudflared tunnel --url http://localhost:5051\n```\nGives you a URL to access from anywhere.\n\nBoth can be set up as systemd services to run 24/7. Which sounds better? Tailscale is probably the simplest.",
          "time": {
            "start": 1780666311014,
            "end": 1780666312658
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 20767,
            "input": 737,
            "output": 186,
            "reasoning": 516,
            "cache": {
              "write": 0,
              "read": 19328
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fc0554001BMbaKqZhU1GhBu",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666336602
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "lets go with cloudflare"
        }
      ]
    },
    {
      "id": "msg_e97fc057d001LjNCYKCpWyZJt8",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fc0554001BMbaKqZhU1GhBu",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 20932,
          "input": 40,
          "output": 79,
          "reasoning": 77,
          "cache": {
            "write": 0,
            "read": 20736
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666336637,
          "completed": 1780666338976
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user wants to go with Cloudflare Tunnel. Let me set it up.\n\nSteps:\n1. Install cloudflared\n2. Set up the tunnel to forward to localhost:5051\n3. Create a systemd service so it stays up 24/7\n4. The user needs to authenticate with their Cloudflare account\n\nLet me install cloudflared first.",
          "time": {
            "start": 1780666337787,
            "end": 1780666338602
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_5mIqzRQ2oNbljyn5AR8i1612",
          "state": {
            "status": "completed",
            "input": {
              "command": "which cloudflared 2>/dev/null || echo \"not installed\"",
              "description": "Check if cloudflared is installed"
            },
            "output": "not installed\n",
            "metadata": {
              "output": "not installed\n",
              "exit": 0,
              "description": "Check if cloudflared is installed",
              "truncated": false
            },
            "title": "Check if cloudflared is installed",
            "time": {
              "start": 1780666338934,
              "end": 1780666338949
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 20932,
            "input": 40,
            "output": 79,
            "reasoning": 77,
            "cache": {
              "write": 0,
              "read": 20736
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fc0ea8001qqnjXUvpEWBBOR",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fc0554001BMbaKqZhU1GhBu",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 21095,
          "input": 83,
          "output": 131,
          "reasoning": 17,
          "cache": {
            "write": 0,
            "read": 20864
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666338984,
          "completed": 1780666342914
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Let me install cloudflared. I'll use the official method from Cloudflare.",
          "time": {
            "start": 1780666340090,
            "end": 1780666340455
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_Y42ZdBHq3psbA43yIuSC8617",
          "state": {
            "status": "completed",
            "input": {
              "description": "Install cloudflared",
              "command": "curl -fsSL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared",
              "timeout": 30000
            },
            "output": "(no output)",
            "metadata": {
              "output": "(no output)",
              "exit": 0,
              "description": "Install cloudflared",
              "truncated": false
            },
            "title": "Install cloudflared",
            "time": {
              "start": 1780666341005,
              "end": 1780666342902
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 21095,
            "input": 83,
            "output": 131,
            "reasoning": 17,
            "cache": {
              "write": 0,
              "read": 20864
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fc1e12001c9Jzx5QD7xEreb",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fc0554001BMbaKqZhU1GhBu",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 21300,
          "input": 117,
          "output": 89,
          "reasoning": 102,
          "cache": {
            "write": 0,
            "read": 20992
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666342930,
          "completed": 1780666360789
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Installed. Now you need to authenticate with your Cloudflare account. Let me guide the user through:\n\n1. `cloudflared tunnel login` - opens a browser to authenticate\n2. Then create a tunnel\n3. Then configure it to route to localhost:5051\n4. Create a systemd service\n\nActually, since this is a headless VPS, `cloudflared tunnel login` will give a URL the user needs to open in their browser. Let me run it.",
          "time": {
            "start": 1780666344170,
            "end": 1780666345207
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_CoMzQtllzqRIlrN5XDj98802",
          "state": {
            "status": "completed",
            "input": {
              "command": "cloudflared tunnel login 2>&1",
              "timeout": 15000,
              "description": "Start cloudflare login process"
            },
            "output": "Please open the following URL and log in with your Cloudflare account:\n\nhttps://dash.cloudflare.com/argotunnel?aud=&callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FBIU9JH8yIxAP5oWh8IrIE6YjFxIz_tK6-F8cGVbXQSw%3D\n\nLeave cloudflared running to download the cert automatically.\n\n\n<shell_metadata>\nshell tool terminated command after exceeding timeout 15000 ms. If this command is expected to take longer and is not waiting for interactive input, retry with a larger timeout value in milliseconds.\n</shell_metadata>",
            "metadata": {
              "output": "Please open the following URL and log in with your Cloudflare account:\n\nhttps://dash.cloudflare.com/argotunnel?aud=&callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FBIU9JH8yIxAP5oWh8IrIE6YjFxIz_tK6-F8cGVbXQSw%3D\n\nLeave cloudflared running to download the cert automatically.\n",
              "exit": null,
              "description": "Start cloudflare login process",
              "truncated": false
            },
            "title": "Start cloudflare login process",
            "time": {
              "start": 1780666345864,
              "end": 1780666360768
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 21300,
            "input": 117,
            "output": 89,
            "reasoning": 102,
            "cache": {
              "write": 0,
              "read": 20992
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97fc63e6001VSPoaslv2u4vXx",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97fc0554001BMbaKqZhU1GhBu",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 21609,
          "input": 204,
          "output": 101,
          "reasoning": 56,
          "cache": {
            "write": 0,
            "read": 21248
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666360806,
          "completed": 1780666363598
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The login command timed out because it's waiting for the user to visit the URL and authenticate. I need to tell the user to open that URL in their browser, log in, and then come back. After that, we proceed.\n\nLet me present this clearly to the user.",
          "time": {
            "start": 1780666361963,
            "end": 1780666362670
          }
        },
        {
          "type": "text",
          "text": "Open this link in your browser to log in with your Cloudflare account:\n\n```\nhttps://dash.cloudflare.com/argotunnel?aud=&callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FBIU9JH8yIxAP5oWh8IrIE6YjFxIz_tK6-F8cGVbXQSw%3D\n```\n\nAfter you authenticate, come back and I'll finish setting up the tunnel.",
          "time": {
            "start": 1780666362675,
            "end": 1780666363585
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 21609,
            "input": 204,
            "output": 101,
            "reasoning": 56,
            "cache": {
              "write": 0,
              "read": 21248
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97ff062b001XLci737onzGOXE",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666533447
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "mimo-v2.5-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "i have this problem"
        },
        {
          "type": "file",
          "mime": "image/png",
          "filename": "image.png",
          "url": "data:image/png;base64,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AAAA/GjZsqVuvPFGtWvXjp6xDSCQBQAAAAAAAIAAYQxZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACBACWQAAAAAAAAAIEAJZAAAAAAAAAAgQAlkAAAAAAAAACJD/D+Ws9+gcp46WAAAAAElFTkSuQmCC"
        }
      ]
    },
    {
      "id": "msg_e97ff0701001ui6bc94snIx2TP",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff062b001XLci737onzGOXE",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 25814,
          "input": 24414,
          "output": 95,
          "reasoning": 281,
          "cache": {
            "write": 0,
            "read": 1024
          }
        },
        "modelID": "mimo-v2.5-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666533633,
          "completed": 1780666541491
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user sees the \"Authorize Cloudflare Tunnel\" page asking to select a zone/domain. They need to have a domain added to Cloudflare for this to work. If they don't have one, this won't work.\n\nLet me check if they have a domain on Cloudflare, or suggest alternatives. Actually, the simplest approach here might be to skip the full Cloudflare Tunnel setup and just use `cloudflared tunnel --url` which creates a quick tunnel (no domain needed) - it just gives a random trycloudflare.com URL.\n\nBut for a permanent 24/7 setup, they'd want a fixed domain. Let me suggest:\n\n1. **Quick tunnel** - `cloudflared tunnel --url localhost:5051` gives a random URL each time it restarts (not ideal for 24/7)\n2. **Named tunnel** - needs a domain on Cloudflare, gives a fixed URL\n\nSince they have this page, they might have a domain. Let me ask if they have one. Actually, the page shows \"Connect your website or app\" which means they probably don't have a zone set up yet, or the list is empty.\n\nLet me tell them to either select a domain they have, or if they don't have one, I can use the quick tunnel approach instead (random URL) or help them add a domain.",
          "time": {
            "start": 1780666536567,
            "end": 1780666539983
          }
        },
        {
          "type": "text",
          "text": "You need a domain on Cloudflare for this. Do you have one, or is that page empty?\n\nIf you don't have a domain, there's a simpler option: **quick tunnel**. It gives you a random `trycloudflare.com` URL — works instantly, no domain needed. The URL changes on restart though.\n\nIf you want a **permanent URL**, you'll need to add a domain to Cloudflare first. Do you have one?",
          "time": {
            "start": 1780666539988,
            "end": 1780666541477
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 25814,
            "input": 24414,
            "output": 95,
            "reasoning": 281,
            "cache": {
              "write": 0,
              "read": 1024
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666567596
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "i dont have a domain fix it"
        }
      ]
    },
    {
      "id": "msg_e97ff8bcf001410MUCtWLx6Ve4",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 22677,
          "input": 517,
          "output": 109,
          "reasoning": 547,
          "cache": {
            "write": 0,
            "read": 21504
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666567631,
          "completed": 1780666575919
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user doesn't have a domain. I have a few options:\n\n1. **Quick tunnel** - `cloudflared tunnel --url http://localhost:5051` - gives a random `*.trycloudflare.com` URL. The URL changes every time cloudflared restarts though, which is not great for 24/7.\n\n2. **Tailscale** - free, no domain needed, creates a private network. The Tailscale IP stays the same, so it's a permanent solution.\n\n3. **UFW + IP whitelist** - just bind to 0.0.0.0 and restrict access to specific IPs. But if the user's IP changes, this is annoying.\n\n4. **WireGuard** - self-hosted VPN, more complex to set up.\n\nSince the user's PC can't stay on 24/7, the quick tunnel approach with a systemd service would work if we can make the URL somehow predictable. But it changes on restart.\n\nActually, we could do:\n- `cloudflared tunnel --url http://localhost:5051 --no-tls-verify` \n- But the URL changes.\n\nAlternatively, what about **using cloudflared in the quick tunnel mode, but paired with a DDNS or just accessing via the random URL** - not ideal.\n\nActually, the quick tunnel URL does change on restart. For 24/7 use where the URL changes, it's not practical. Let me think...\n\nHmm, actually Cloudflare Tunnel (quick tunnel) URLs might change. Let me verify.\n\nFor a more permanent solution without a domain, **Tailscale** is really the best option. It's free, secure, no domain needed, and the IP is static within your tailnet.\n\nLet me suggest Tailscale instead, or ask if they're okay with the URL changing each time cloudflared restarts.\n\nActually, I already suggested Tailscale before and they chose Cloudflare. Let me just lay out the options clearly now:\n\n1. Cloudflare quick tunnel (URL changes on restart)\n2. Tailscale (static IP, free, no domain)\n3. Other\n\nLet me just tell them straight.\n\nWait - actually there's another approach. We could use `cloudflared tunnel --url` without a domain (quick tunnel), and the URL stays the same as long as the tunnel process stays running. With a systemd service with `Restart=always`, it won't restart unless the VPS reboots. If the VPS reboots, the URL changes, which is a bummer.\n\nFor true 24/7, Tailscale is the best no-domain option. Let me recommend it.",
          "time": {
            "start": 1780666568863,
            "end": 1780666575094
          }
        },
        {
          "type": "text",
          "text": "No domain needed then. I'll switch to **Tailscale** — free, no domain, static private IP, and dead simple:",
          "time": {
            "start": 1780666575102,
            "end": 1780666575904
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_s4MkndMZBh6DGmlnCQC42955",
          "state": {
            "status": "completed",
            "input": {
              "command": "which tailscale 2>/dev/null && echo \"already installed\" || echo \"not installed\"",
              "description": "Check if tailscale is installed"
            },
            "output": "not installed\n",
            "metadata": {
              "output": "not installed\n",
              "exit": 0,
              "description": "Check if tailscale is installed",
              "truncated": false
            },
            "title": "Check if tailscale is installed",
            "time": {
              "start": 1780666575869,
              "end": 1780666575885
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 22677,
            "input": 517,
            "output": 109,
            "reasoning": 547,
            "cache": {
              "write": 0,
              "read": 21504
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e97ffac3b001Zc9Dpa4jJeBKYl",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 22794,
          "input": 36,
          "output": 96,
          "reasoning": 6,
          "cache": {
            "write": 0,
            "read": 22656
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666575931,
          "completed": 1780666602221
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Let me install Tailscale.",
          "time": {
            "start": 1780666577257,
            "end": 1780666577515
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_pXqdSPaJNrkkPSbCJZkW8082",
          "state": {
            "status": "completed",
            "input": {
              "command": "curl -fsSL https://tailscale.com/install.sh | sh 2>&1",
              "description": "Install Tailscale",
              "timeout": 30000
            },
            "output": "Installing Tailscale for ubuntu jammy, using method apt\n+ mkdir -p --mode=0755 /usr/share/keyrings\n+ tee /usr/share/keyrings/tailscale-archive-keyring.gpg\n+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg\n+ chmod 0644 /usr/share/keyrings/tailscale-archive-keyring.gpg\n+ tee /etc/apt/sources.list.d/tailscale.list\n+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list\n# Tailscale packages for ubuntu jammy\ndeb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] https://pkgs.tailscale.com/stable/ubuntu jammy main\n+ chmod 0644 /etc/apt/sources.list.d/tailscale.list\n+ apt-get update\nHit:1 http://archive.ubuntu.com/ubuntu jammy InRelease\nGet:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]\nGet:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]\nHit:4 https://deb.nodesource.com/node_22.x nodistro InRelease\nGet:5 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease\nGet:6 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [3565 kB]\nGet:7 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [3291 kB]\nGet:8 https://pkgs.tailscale.com/stable/ubuntu jammy/main all Packages [354 B]\nGet:9 https://pkgs.tailscale.com/stable/ubuntu jammy/main amd64 Packages [15.0 kB]\nFetched 7134 kB in 4s (1743 kB/s)\nReading package lists...\n+ [ -n  ]\n+ apt-get install -y tailscale tailscale-archive-keyring\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following packages were automatically installed and are no longer required:\n  adwaita-icon-theme dns-root-data gtk-update-icon-cache hicolor-icon-theme\n  humanity-icon-theme libevent-2.1-7 libgnutls-dane0 libidn12 liblockfile-bin\n  liblockfile1 libunbound8 ubuntu-mono\nUse 'apt autoremove' to remove them.\nThe following NEW packages will be installed:\n  tailscale tailscale-archive-keyring\n0 upgraded, 2 newly installed, 0 to remove and 19 not upgraded.\nNeed to get 37.1 MB of archives.\nAfter this operation, 73.0 MB of additional disk space will be used.\nGet:1 https://pkgs.tailscale.com/stable/ubuntu jammy/main amd64 tailscale amd64 1.98.4 [37.1 MB]\nGet:2 https://pkgs.tailscale.com/stable/ubuntu jammy/main all tailscale-archive-keyring all 1.35.181 [3082 B]\nFetched 37.1 MB in 1s (61.6 MB/s)\nSelecting previously unselected package tailscale.\r\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Reading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 56308 files and directories currently installed.)\r\nPreparing to unpack .../tailscale_1.98.4_amd64.deb ...\r\nUnpacking tailscale (1.98.4) ...\r\nSelecting previously unselected package tailscale-archive-keyring.\r\nPreparing to unpack .../tailscale-archive-keyring_1.35.181_all.deb ...\r\nUnpacking tailscale-archive-keyring (1.35.181) ...\r\nSetting up tailscale-archive-keyring (1.35.181) ...\r\nSetting up tailscale (1.98.4) ...\r\nCreated symlink /etc/systemd/system/multi-user.target.wants/tailscaled.service → /lib/systemd/system/tailscaled.service.\r\n+ [ false = true ]\n+ set +x\nInstallation complete! Log in to start using Tailscale by running:\n\ntailscale up\n",
            "metadata": {
              "output": "Installing Tailscale for ubuntu jammy, using method apt\n+ mkdir -p --mode=0755 /usr/share/keyrings\n+ tee /usr/share/keyrings/tailscale-archive-keyring.gpg\n+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg\n+ chmod 0644 /usr/share/keyrings/tailscale-archive-keyring.gpg\n+ tee /etc/apt/sources.list.d/tailscale.list\n+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list\n# Tailscale packages for ubuntu jammy\ndeb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] https://pkgs.tailscale.com/stable/ubuntu jammy main\n+ chmod 0644 /etc/apt/sources.list.d/tailscale.list\n+ apt-get update\nHit:1 http://archive.ubuntu.com/ubuntu jammy InRelease\nGet:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]\nGet:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]\nHit:4 https://deb.nodesource.com/node_22.x nodistro InRelease\nGet:5 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease\nGet:6 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [3565 kB]\nGet:7 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [3291 kB]\nGet:8 https://pkgs.tailscale.com/stable/ubuntu jammy/main all Packages [354 B]\nGet:9 https://pkgs.tailscale.com/stable/ubuntu jammy/main amd64 Packages [15.0 kB]\nFetched 7134 kB in 4s (1743 kB/s)\nReading package lists...\n+ [ -n  ]\n+ apt-get install -y tailscale tailscale-archive-keyring\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following packages were automatically installed and are no longer required:\n  adwaita-icon-theme dns-root-data gtk-update-icon-cache hicolor-icon-theme\n  humanity-icon-theme libevent-2.1-7 libgnutls-dane0 libidn12 liblockfile-bin\n  liblockfile1 libunbound8 ubuntu-mono\nUse 'apt autoremove' to remove them.\nThe following NEW packages will be installed:\n  tailscale tailscale-archive-keyring\n0 upgraded, 2 newly installed, 0 to remove and 19 not upgraded.\nNeed to get 37.1 MB of archives.\nAfter this operation, 73.0 MB of additional disk space will be used.\nGet:1 https://pkgs.tailscale.com/stable/ubuntu jammy/main amd64 tailscale amd64 1.98.4 [37.1 MB]\nGet:2 https://pkgs.tailscale.com/stable/ubuntu jammy/main all tailscale-archive-keyring all 1.35.181 [3082 B]\nFetched 37.1 MB in 1s (61.6 MB/s)\nSelecting previously unselected package tailscale.\r\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Reading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 56308 files and directories currently installed.)\r\nPreparing to unpack .../tailscale_1.98.4_amd64.deb ...\r\nUnpacking tailscale (1.98.4) ...\r\nSelecting previously unselected package tailscale-archive-keyring.\r\nPreparing to unpack .../tailscale-archive-keyring_1.35.181_all.deb ...\r\nUnpacking tailscale-archive-keyring (1.35.181) ...\r\nSetting up tailscale-archive-keyring (1.35.181) ...\r\nSetting up tailscale (1.98.4) ...\r\nCreated symlink /etc/systemd/system/multi-user.target.wants/tailscaled.service → /lib/systemd/system/tailscaled.service.\r\n+ [ false = true ]\n+ set +x\nInstallation complete! Log in to start using Tailscale by running:\n\ntailscale up\n",
              "exit": 0,
              "description": "Install Tailscale",
              "truncated": false
            },
            "title": "Install Tailscale",
            "time": {
              "start": 1780666602185,
              "end": 1780666602203
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 22794,
            "input": 36,
            "output": 96,
            "reasoning": 6,
            "cache": {
              "write": 0,
              "read": 22656
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e980012f9001Sfmit4BPpwbBiN",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 24015,
          "input": 1098,
          "output": 86,
          "reasoning": 47,
          "cache": {
            "write": 0,
            "read": 22784
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666602234,
          "completed": 1780666609079
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Installed. Now I need to start Tailscale and have the user authenticate. Running `tailscale up` will give a URL they need to open in their browser to log in with their Google/GitHub/Microsoft/etc account.",
          "time": {
            "start": 1780666603395,
            "end": 1780666603988
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_far2i6rJWsTCdPl8q0RT1626",
          "state": {
            "status": "completed",
            "input": {
              "command": "tailscale up 2>&1",
              "description": "Start Tailscale authentication",
              "timeout": 10000
            },
            "output": "failed to connect to local tailscaled (which appears to be running as tailscaled, pid 741527). Got error: Failed to connect to local Tailscale daemon for /localapi/v0/status; systemd tailscaled.service not running. Error: dial unix /var/run/tailscale/tailscaled.sock: connect: no such file or directory\n",
            "metadata": {
              "output": "failed to connect to local tailscaled (which appears to be running as tailscaled, pid 741527). Got error: Failed to connect to local Tailscale daemon for /localapi/v0/status; systemd tailscaled.service not running. Error: dial unix /var/run/tailscale/tailscaled.sock: connect: no such file or directory\n",
              "exit": 1,
              "description": "Start Tailscale authentication",
              "truncated": false
            },
            "title": "Start Tailscale authentication",
            "time": {
              "start": 1780666609051,
              "end": 1780666609065
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 24015,
            "input": 1098,
            "output": 86,
            "reasoning": 47,
            "cache": {
              "write": 0,
              "read": 22784
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98002dc50011ZoETwaw5mhB41",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 24208,
          "input": 172,
          "output": 90,
          "reasoning": 10,
          "cache": {
            "write": 0,
            "read": 23936
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666609093,
          "completed": 1780666613956
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Need to start the tailscaled service first.",
          "time": {
            "start": 1780666610645,
            "end": 1780666610934
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_YlNSaodYjXty54W6EdGo0074",
          "state": {
            "status": "completed",
            "input": {
              "description": "Start tailscaled service",
              "command": "systemctl start tailscaled && sleep 2",
              "timeout": 10000
            },
            "output": "(no output)",
            "metadata": {
              "output": "(no output)",
              "exit": 0,
              "description": "Start tailscaled service",
              "truncated": false
            },
            "title": "Start tailscaled service",
            "time": {
              "start": 1780666611383,
              "end": 1780666613928
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 24208,
            "input": 172,
            "output": 90,
            "reasoning": 10,
            "cache": {
              "write": 0,
              "read": 23936
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e980040d7001Y5Tgg6oHW40qTK",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 24319,
          "input": 30,
          "output": 86,
          "reasoning": 11,
          "cache": {
            "write": 0,
            "read": 24192
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666613976,
          "completed": 1780666618864
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Now let's run `tailscale up` again.",
          "time": {
            "start": 1780666615338,
            "end": 1780666615588
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_Fk7dJD7jVtI4Mvs2asDN0628",
          "state": {
            "status": "completed",
            "input": {
              "description": "Authenticate Tailscale",
              "command": "tailscale up 2>&1",
              "timeout": 10000
            },
            "output": "failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)\n",
            "metadata": {
              "output": "failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)\n",
              "exit": 1,
              "description": "Authenticate Tailscale",
              "truncated": false
            },
            "title": "Authenticate Tailscale",
            "time": {
              "start": 1780666618819,
              "end": 1780666618841
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 24319,
            "input": 30,
            "output": 86,
            "reasoning": 11,
            "cache": {
              "write": 0,
              "read": 24192
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98005400001d4LUSnYTpB1Y78",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 24479,
          "input": 165,
          "output": 110,
          "reasoning": 12,
          "cache": {
            "write": 0,
            "read": 24192
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666618880,
          "completed": 1780666621308
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Let me check the status of the tailscaled service.",
          "time": {
            "start": 1780666620362,
            "end": 1780666620672
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_FXEBu1n208XWc8BRovEw2992",
          "state": {
            "status": "completed",
            "input": {
              "description": "Check tailscaled status",
              "command": "systemctl status tailscaled 2>&1; journalctl -u tailscaled --no-pager -n 20 2>&1",
              "timeout": 10000
            },
            "output": "× tailscaled.service - Tailscale node agent\n     Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; vendor preset: enabled)\n     Active: failed (Result: exit-code) since Fri 2026-06-05 13:37:00 UTC; 819ms ago\n       Docs: https://tailscale.com/docs/\n    Process: 741820 ExecStart=/usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=${PORT} $FLAGS (code=exited, status=1/FAILURE)\n    Process: 741850 ExecStopPost=/usr/sbin/tailscaled --cleanup (code=exited, status=0/SUCCESS)\n   Main PID: 741820 (code=exited, status=1/FAILURE)\n\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 5.\nJun 05 13:37:00 vps.server.com systemd[1]: Stopped Tailscale node agent.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Start request repeated too quickly.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: Failed to start Tailscale node agent.\nJun 05 13:36:59 vps.server.com tailscaled[741820]: getLocalBackend error: createEngine: tstun.New(\"tailscale0\"): CreateTUN(\"tailscale0\") failed; /dev/net/tun does not exist\nJun 05 13:36:59 vps.server.com systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE\nJun 05 13:36:59 vps.server.com tailscaled[741850]: TPM: error opening: stat /dev/tpmrm0: no such file or directory\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logtail started\nJun 05 13:36:59 vps.server.com tailscaled[741850]: Program starting: v1.98.4-t9e69045b2-ged3a62f14, Go 1.26.3: []string{\"/usr/sbin/tailscaled\", \"--cleanup\"}\nJun 05 13:36:59 vps.server.com tailscaled[741850]: LogID: 49a079199d0eeee78190d0c8caae47f461edc3e7d48e8e95d002d5e221fca0da\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logpolicy: using $STATE_DIRECTORY, \"/var/lib/tailscale\"\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: resolvedIsActuallyResolver error: resolv.conf doesn't point to systemd-resolved; points to [8.8.8.8 8.8.4.4]\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: [rc=resolved resolved=not-in-use ret=direct]\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: using \"direct\" mode\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: using *dns.directManager\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: inotify: NewDirWatcher: context canceled\nJun 05 13:36:59 vps.server.com tailscaled[741850]: flushing log.\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logger closing down\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 5.\nJun 05 13:37:00 vps.server.com systemd[1]: Stopped Tailscale node agent.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Start request repeated too quickly.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: Failed to start Tailscale node agent.\n",
            "metadata": {
              "output": "× tailscaled.service - Tailscale node agent\n     Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; vendor preset: enabled)\n     Active: failed (Result: exit-code) since Fri 2026-06-05 13:37:00 UTC; 819ms ago\n       Docs: https://tailscale.com/docs/\n    Process: 741820 ExecStart=/usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=${PORT} $FLAGS (code=exited, status=1/FAILURE)\n    Process: 741850 ExecStopPost=/usr/sbin/tailscaled --cleanup (code=exited, status=0/SUCCESS)\n   Main PID: 741820 (code=exited, status=1/FAILURE)\n\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 5.\nJun 05 13:37:00 vps.server.com systemd[1]: Stopped Tailscale node agent.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Start request repeated too quickly.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: Failed to start Tailscale node agent.\nJun 05 13:36:59 vps.server.com tailscaled[741820]: getLocalBackend error: createEngine: tstun.New(\"tailscale0\"): CreateTUN(\"tailscale0\") failed; /dev/net/tun does not exist\nJun 05 13:36:59 vps.server.com systemd[1]: tailscaled.service: Main process exited, code=exited, status=1/FAILURE\nJun 05 13:36:59 vps.server.com tailscaled[741850]: TPM: error opening: stat /dev/tpmrm0: no such file or directory\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logtail started\nJun 05 13:36:59 vps.server.com tailscaled[741850]: Program starting: v1.98.4-t9e69045b2-ged3a62f14, Go 1.26.3: []string{\"/usr/sbin/tailscaled\", \"--cleanup\"}\nJun 05 13:36:59 vps.server.com tailscaled[741850]: LogID: 49a079199d0eeee78190d0c8caae47f461edc3e7d48e8e95d002d5e221fca0da\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logpolicy: using $STATE_DIRECTORY, \"/var/lib/tailscale\"\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: resolvedIsActuallyResolver error: resolv.conf doesn't point to systemd-resolved; points to [8.8.8.8 8.8.4.4]\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: [rc=resolved resolved=not-in-use ret=direct]\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: using \"direct\" mode\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: using *dns.directManager\nJun 05 13:36:59 vps.server.com tailscaled[741850]: dns: inotify: NewDirWatcher: context canceled\nJun 05 13:36:59 vps.server.com tailscaled[741850]: flushing log.\nJun 05 13:36:59 vps.server.com tailscaled[741850]: logger closing down\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Scheduled restart job, restart counter is at 5.\nJun 05 13:37:00 vps.server.com systemd[1]: Stopped Tailscale node agent.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Start request repeated too quickly.\nJun 05 13:37:00 vps.server.com systemd[1]: tailscaled.service: Failed with result 'exit-code'.\nJun 05 13:37:00 vps.server.com systemd[1]: Failed to start Tailscale node agent.\n",
              "exit": 0,
              "description": "Check tailscaled status",
              "truncated": false
            },
            "title": "Check tailscaled status",
            "time": {
              "start": 1780666621232,
              "end": 1780666621244
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 24479,
            "input": 165,
            "output": 110,
            "reasoning": 12,
            "cache": {
              "write": 0,
              "read": 24192
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98005d89001L3VrWyROENhvkm",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 26185,
          "input": 1122,
          "output": 134,
          "reasoning": 481,
          "cache": {
            "write": 0,
            "read": 24448
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666621321,
          "completed": 1780666629902
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The error is: `/dev/net/tun does not exist`. This VPS doesn't have the TUN device available (common in some VPS/docker environments). Tailscale needs the TUN device to create a virtual network interface.\n\nOptions:\n1. **Enable TUN** - some VPS providers allow enabling TUN/TAP in the control panel\n2. **Userspace networking mode** - Tailscale can run without TUN using `--tun=userspace-networking` flag, but this has limited functionality (no subnet routing, etc.)\n3. **Alternative: Cloudflare quick tunnel** - the simplest approach without needing TUN\n\nActually wait, Tailscale does support `--tun=userspace-networking` which doesn't need the TUN device. Let me check.\n\nActually, in newer versions of Tailscale, there's `--tun=userspace-networking` or we can set environment variable `TS_USERSPACE=yes`. But the node access might be limited.\n\nActually, let me just go with the cloudflare quick tunnel approach instead. It's simpler:\n```bash\ncloudflared tunnel --url http://localhost:5051\n```\nThis doesn't need any virtual network devices. The downside is the URL changes when restarted, but we can set up a systemd service to keep it alive 24/7.\n\nWait, but the user doesn't have a domain. For quick tunnels, cloudflared generates a random `trycloudflare.com` URL that changes each restart. If the VPS doesn't reboot often, it's not a big deal. But if it does reboot, you need to check the new URL.\n\nHmm, let me think about this differently. What are the alternatives?\n\n1. **Cloudflare quick tunnel** - easy setup, random URL changes on restart\n2. **BoringTun** - userspace WireGuard implementation that can replace TUN\n3. **Enable TUN in VPS panel** - if the provider supports it\n4. **Use a reverse SSH tunnel to a cheap $3/month VPS** - overkill\n\nLet me suggest enabling TUN or using cloudflare quick tunnel. Let me check if this is a common VPS provider issue.\n\nActually, let me try the Tailscale userspace networking mode first - it might work without TUN.",
          "time": {
            "start": 1780666622846,
            "end": 1780666628034
          }
        },
        {
          "type": "text",
          "text": "This VPS doesn't have a TUN device (common in some VPS setups). Let me try Tailscale in userspace mode:",
          "time": {
            "start": 1780666628040,
            "end": 1780666628896
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_nyZq8ALluYmIRz0NMTgu2504",
          "state": {
            "status": "completed",
            "input": {
              "command": "systemctl stop tailscaled && sleep 1 && tailscale up --tun=userspace-networking 2>&1",
              "description": "Try Tailscale userspace mode",
              "timeout": 15000
            },
            "output": "flag provided but not defined: -tun\nConnect to Tailscale, logging in if needed\n\nUSAGE\n  tailscale up [flags]\n\n\"tailscale up\" connects this machine to your Tailscale network,\ntriggering authentication if necessary.\n\nWith no flags, \"tailscale up\" brings the network online without\nchanging any settings. (That is, it's the opposite of \"tailscale\ndown\").\n\nIf flags are specified, the flags must be the complete set of desired\nsettings. An error is returned if any setting would be changed as a\nresult of an unspecified flag's default value, unless the --reset flag\nis also used. (The flags --auth-key, --force-reauth, and --qr are not\nconsidered settings that need to be re-specified when modifying\nsettings.)\n\nFLAGS\n  --accept-dns, --accept-dns=false\n    \taccept DNS configuration from the admin panel (default true)\n  --accept-risk value\n    \taccept risk and skip confirmation for risk types: lose-ssh,mac-app-connector,all\n  --accept-routes, --accept-routes=false\n    \taccept routes advertised by other Tailscale nodes (default false)\n  --advertise-connector, --advertise-connector=false\n    \tadvertise this node as an app connector (default false)\n  --advertise-exit-node, --advertise-exit-node=false\n    \toffer to be an exit node for internet traffic for the tailnet (default false)\n  --advertise-routes value\n    \troutes to advertise to other nodes (comma-separated, e.g. \"10.0.0.0/8,192.168.0.0/24\") or empty string to not advertise routes\n  --advertise-tags value\n    \tcomma-separated ACL tags to request (e.g. \"tag:eng,tag:montreal,tag:ssh\"); the \"tag:\" prefix is optional and added automatically when omitted (e.g. \"eng,montreal,ssh\")\n  --audience value\n    \tAudience used when requesting an ID token from an identity provider for auth keys via workload identity federation\n  --auth-key value\n    \tnode authorization key; if it begins with \"file:\", then it's a path to a file containing the authkey\n  --client-id value\n    \tClient ID used to generate authkeys via workload identity federation\n  --client-secret value\n    \tClient Secret used to generate authkeys via OAuth; if it begins with \"file:\", then it's a path to a file containing the secret\n  --exit-node value\n    \tTailscale exit node (IP, base name, or auto:any) for internet traffic, or empty string to not use an exit node\n  --exit-node-allow-lan-access, --exit-node-allow-lan-access=false\n    \tAllow direct access to the local network when routing traffic via an exit node (default false)\n  --force-reauth, --force-reauth=false\n    \tforce reauthentication (WARNING: this may bring down the Tailscale connection and thus should not be done remotely over SSH or RDP) (default false)\n  --hostname value\n    \thostname to use instead of the one provided by the OS\n  --id-token value\n    \tID token from the identity provider to exchange with the control server for workload identity federation; if it begins with \"file:\", then it's a path to a file containing the token\n  --json, --json=false\n    \toutput in JSON format (WARNING: format subject to change) (default false)\n  --login-server value\n    \tbase URL of control server (default https://controlplane.tailscale.com)\n  --netfilter-mode value\n    \tnetfilter mode (one of on, nodivert, off) (default on)\n  --operator value\n    \tUnix username to allow to operate on tailscaled without sudo\n  --qr, --qr=false\n    \tshow QR code for login URLs (default false)\n  --qr-format value\n    \tQR code formatting (auto, ascii, large, small) (default auto)\n  --report-posture, --report-posture=false\n    \tallow management plane to gather device posture information (default false)\n  --reset, --reset=false\n    \treset unspecified settings to their default values (default false)\n  --shields-up, --shields-up=false\n    \tdon't allow incoming connections (default false)\n  --snat-subnet-routes, --snat-subnet-routes=false\n    \tsource NAT traffic to local routes advertised with --advertise-routes (default true)\n  --ssh, --ssh=false\n    \trun an SSH server, permitting access per tailnet admin's declared policy (default false)\n  --stateful-filtering, --stateful-filtering=false\n    \tapply stateful filtering to forwarded packets (subnet routers, exit nodes, and so on) (default false)\n  --timeout value\n    \tmaximum amount of time to wait for tailscaled to enter a Running state; default (0s) blocks forever (default 0s)\n",
            "metadata": {
              "output": "flag provided but not defined: -tun\nConnect to Tailscale, logging in if needed\n\nUSAGE\n  tailscale up [flags]\n\n\"tailscale up\" connects this machine to your Tailscale network,\ntriggering authentication if necessary.\n\nWith no flags, \"tailscale up\" brings the network online without\nchanging any settings. (That is, it's the opposite of \"tailscale\ndown\").\n\nIf flags are specified, the flags must be the complete set of desired\nsettings. An error is returned if any setting would be changed as a\nresult of an unspecified flag's default value, unless the --reset flag\nis also used. (The flags --auth-key, --force-reauth, and --qr are not\nconsidered settings that need to be re-specified when modifying\nsettings.)\n\nFLAGS\n  --accept-dns, --accept-dns=false\n    \taccept DNS configuration from the admin panel (default true)\n  --accept-risk value\n    \taccept risk and skip confirmation for risk types: lose-ssh,mac-app-connector,all\n  --accept-routes, --accept-routes=false\n    \taccept routes advertised by other Tailscale nodes (default false)\n  --advertise-connector, --advertise-connector=false\n    \tadvertise this node as an app connector (default false)\n  --advertise-exit-node, --advertise-exit-node=false\n    \toffer to be an exit node for internet traffic for the tailnet (default false)\n  --advertise-routes value\n    \troutes to advertise to other nodes (comma-separated, e.g. \"10.0.0.0/8,192.168.0.0/24\") or empty string to not advertise routes\n  --advertise-tags value\n    \tcomma-separated ACL tags to request (e.g. \"tag:eng,tag:montreal,tag:ssh\"); the \"tag:\" prefix is optional and added automatically when omitted (e.g. \"eng,montreal,ssh\")\n  --audience value\n    \tAudience used when requesting an ID token from an identity provider for auth keys via workload identity federation\n  --auth-key value\n    \tnode authorization key; if it begins with \"file:\", then it's a path to a file containing the authkey\n  --client-id value\n    \tClient ID used to generate authkeys via workload identity federation\n  --client-secret value\n    \tClient Secret used to generate authkeys via OAuth; if it begins with \"file:\", then it's a path to a file containing the secret\n  --exit-node value\n    \tTailscale exit node (IP, base name, or auto:any) for internet traffic, or empty string to not use an exit node\n  --exit-node-allow-lan-access, --exit-node-allow-lan-access=false\n    \tAllow direct access to the local network when routing traffic via an exit node (default false)\n  --force-reauth, --force-reauth=false\n    \tforce reauthentication (WARNING: this may bring down the Tailscale connection and thus should not be done remotely over SSH or RDP) (default false)\n  --hostname value\n    \thostname to use instead of the one provided by the OS\n  --id-token value\n    \tID token from the identity provider to exchange with the control server for workload identity federation; if it begins with \"file:\", then it's a path to a file containing the token\n  --json, --json=false\n    \toutput in JSON format (WARNING: format subject to change) (default false)\n  --login-server value\n    \tbase URL of control server (default https://controlplane.tailscale.com)\n  --netfilter-mode value\n    \tnetfilter mode (one of on, nodivert, off) (default on)\n  --operator value\n    \tUnix username to allow to operate on tailscaled without sudo\n  --qr, --qr=false\n    \tshow QR code for login URLs (default false)\n  --qr-format value\n    \tQR code formatting (auto, ascii, large, small) (default auto)\n  --report-posture, --report-posture=false\n    \tallow management plane to gather device posture information (default false)\n  --reset, --reset=false\n    \treset unspecified settings to their default values (default false)\n  --shields-up, --shields-up=false\n    \tdon't allow incoming connections (default false)\n  --snat-subnet-routes, --snat-subnet-routes=false\n    \tsource NAT traffic to local routes advertised with --advertise-routes (default true)\n  --ssh, --ssh=false\n    \trun an SSH server, permitting access per tailnet admin's declared policy (default false)\n  --stateful-filtering, --stateful-filtering=false\n    \tapply stateful filtering to forwarded packets (subnet routers, exit nodes, and so on) (default false)\n  --timeout value\n    \tmaximum amount of time to wait for tailscaled to enter a Running state; default (0s) blocks forever (default 0s)\n",
              "exit": 2,
              "description": "Try Tailscale userspace mode",
              "truncated": false
            },
            "title": "Try Tailscale userspace mode",
            "time": {
              "start": 1780666629877,
              "end": 1780666629889
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 26185,
            "input": 1122,
            "output": 134,
            "reasoning": 481,
            "cache": {
              "write": 0,
              "read": 24448
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98007f1a001y3M13xomUwxL7b",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 27545,
          "input": 1184,
          "output": 98,
          "reasoning": 151,
          "cache": {
            "write": 0,
            "read": 26112
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666629914,
          "completed": 1780666633238
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The `--tun` flag doesn't exist in this version. Let me try a different approach for userspace networking - I can set the `TS_USERSPACE` environment variable or use the `tailscaled` flag directly.\n\nActually, looking at the error more carefully - `/dev/net/tun does not exist` - this is a common issue in LXC containers or some VPS providers. Let me check if we can create the TUN device or use the userspace mode.\n\nFor Tailscale, userspace networking can be enabled by passing `--tun=userspace-networking` to `tailscaled`, not `tailscale up`. But the version might not support it.\n\nLet me check the tailscaled options.",
          "time": {
            "start": 1780666631170,
            "end": 1780666632700
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_GEtca6SNZiXdSgZJGMeZ1579",
          "state": {
            "status": "completed",
            "input": {
              "command": "/usr/sbin/tailscaled --help 2>&1 | head -20",
              "description": "Check tailscaled options",
              "timeout": 5000
            },
            "output": "Usage of /usr/sbin/tailscaled:\n  -bird-socket string\n    \tpath of the bird unix socket\n  -cleanup\n    \tclean up system state and exit\n  -config string\n    \tpath to config file, or 'vm:user-data' to use the VM's user-data (EC2)\n  -debug string\n    \tlisten address ([ip]:port) of optional debug server\n  -encrypt-state\n    \tencrypt the state file on disk; when not set encryption will be enabled if supported on this platform; uses TPM on Linux and Windows, on all other platforms this flag is not supported\n  -hardware-attestation\n    \tuse hardware-backed keys to bind node identity to this device when supported\n    \tby the OS and hardware. Uses TPM 2.0 on Linux and Windows; SecureEnclave on\n    \tmacOS and iOS; and Keystore on Android. Only supported for Tailscale nodes that\n    \tstore state on filesystem.\n  -no-logs-no-support\n    \tdisable log uploads; this also disables any technical support\n  -outbound-http-proxy-listen string\n    \toptional [ip]:port to run an outbound HTTP proxy (e.g. \"localhost:8080\")\n",
            "metadata": {
              "output": "Usage of /usr/sbin/tailscaled:\n  -bird-socket string\n    \tpath of the bird unix socket\n  -cleanup\n    \tclean up system state and exit\n  -config string\n    \tpath to config file, or 'vm:user-data' to use the VM's user-data (EC2)\n  -debug string\n    \tlisten address ([ip]:port) of optional debug server\n  -encrypt-state\n    \tencrypt the state file on disk; when not set encryption will be enabled if supported on this platform; uses TPM on Linux and Windows, on all other platforms this flag is not supported\n  -hardware-attestation\n    \tuse hardware-backed keys to bind node identity to this device when supported\n    \tby the OS and hardware. Uses TPM 2.0 on Linux and Windows; SecureEnclave on\n    \tmacOS and iOS; and Keystore on Android. Only supported for Tailscale nodes that\n    \tstore state on filesystem.\n  -no-logs-no-support\n    \tdisable log uploads; this also disables any technical support\n  -outbound-http-proxy-listen string\n    \toptional [ip]:port to run an outbound HTTP proxy (e.g. \"localhost:8080\")\n",
              "exit": 0,
              "description": "Check tailscaled options",
              "truncated": false
            },
            "title": "Check tailscaled options",
            "time": {
              "start": 1780666633201,
              "end": 1780666633218
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 27545,
            "input": 1184,
            "output": 98,
            "reasoning": 151,
            "cache": {
              "write": 0,
              "read": 26112
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98008c29001CQJFHlf6h2paA7",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 28035,
          "input": 314,
          "output": 124,
          "reasoning": 77,
          "cache": {
            "write": 0,
            "read": 27520
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666633257,
          "completed": 1780666636319
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "I don't see a `--tun` flag. Let me check if there's a way to configure the TUN device differently, or set up the userspace networking mode through config.\n\nActually, looking at the original error: `CreateTUN(\"tailscale0\") failed; /dev/net/tun does not exist`. Let me try to create the TUN device.",
          "time": {
            "start": 1780666634653,
            "end": 1780666635579
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_FPD2jtjZc4sARgj9p4Ux7457",
          "state": {
            "status": "completed",
            "input": {
              "command": "mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 666 /dev/net/tun && ls -la /dev/net/tun 2>&1",
              "description": "Try creating TUN device manually",
              "timeout": 5000
            },
            "output": "crw-rw-rw- 1 root root 10, 200 Jun  5 13:37 /dev/net/tun\n",
            "metadata": {
              "output": "crw-rw-rw- 1 root root 10, 200 Jun  5 13:37 /dev/net/tun\n",
              "exit": 0,
              "description": "Try creating TUN device manually",
              "truncated": false
            },
            "title": "Try creating TUN device manually",
            "time": {
              "start": 1780666636277,
              "end": 1780666636289
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 28035,
            "input": 314,
            "output": 124,
            "reasoning": 77,
            "cache": {
              "write": 0,
              "read": 27520
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98009837001CnSms14b0NVqIv",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 28222,
          "input": 44,
          "output": 104,
          "reasoning": 42,
          "cache": {
            "write": 0,
            "read": 28032
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666636343,
          "completed": 1780666641108
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The TUN device was created. But it might not work if the kernel module `tun` isn't loaded or the container/VPS doesn't support it. Let me try starting tailscaled again.",
          "time": {
            "start": 1780666637585,
            "end": 1780666638221
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_aIphLAfZWypCNFgGfDyX4760",
          "state": {
            "status": "completed",
            "input": {
              "command": "systemctl start tailscaled && sleep 2 && systemctl status tailscaled 2>&1",
              "description": "Start tailscaled after creating TUN",
              "timeout": 10000
            },
            "output": "● tailscaled.service - Tailscale node agent\n     Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2026-06-05 13:37:19 UTC; 2s ago\n       Docs: https://tailscale.com/docs/\n   Main PID: 741900 (tailscaled)\n     Status: \"Needs login: \"\n      Tasks: 10 (limit: 308812)\n     Memory: 19.2M\n     CGroup: /system.slice/tailscaled.service\n             └─741900 /usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=41641\n\nJun 05 13:37:19 vps.server.com tailscaled[741900]: Backend: logs: be:49a079199d0eeee78190d0c8caae47f461edc3e7d48e8e95d002d5e221fca0da fe:\nJun 05 13:37:19 vps.server.com tailscaled[741900]: Switching ipn state NoState -> NeedsLogin (WantRunning=false, nm=false)\nJun 05 13:37:19 vps.server.com tailscaled[741900]: blockEngineUpdates(true)\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: configuring router\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: user dialer\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: configuring DNS\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: Set: {DefaultResolvers:[] Routes:{} SearchDomains:[] Hosts:0}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: Resolvercfg: {Routes:{} Hosts:0 LocalDomains:[]}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: OScfg: {}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: health(warnable=wantrunning-false): error: Tailscale is stopped.\n",
            "metadata": {
              "output": "● tailscaled.service - Tailscale node agent\n     Loaded: loaded (/lib/systemd/system/tailscaled.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2026-06-05 13:37:19 UTC; 2s ago\n       Docs: https://tailscale.com/docs/\n   Main PID: 741900 (tailscaled)\n     Status: \"Needs login: \"\n      Tasks: 10 (limit: 308812)\n     Memory: 19.2M\n     CGroup: /system.slice/tailscaled.service\n             └─741900 /usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=41641\n\nJun 05 13:37:19 vps.server.com tailscaled[741900]: Backend: logs: be:49a079199d0eeee78190d0c8caae47f461edc3e7d48e8e95d002d5e221fca0da fe:\nJun 05 13:37:19 vps.server.com tailscaled[741900]: Switching ipn state NoState -> NeedsLogin (WantRunning=false, nm=false)\nJun 05 13:37:19 vps.server.com tailscaled[741900]: blockEngineUpdates(true)\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: configuring router\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: user dialer\nJun 05 13:37:19 vps.server.com tailscaled[741900]: wgengine: Reconfig: configuring DNS\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: Set: {DefaultResolvers:[] Routes:{} SearchDomains:[] Hosts:0}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: Resolvercfg: {Routes:{} Hosts:0 LocalDomains:[]}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: dns: OScfg: {}\nJun 05 13:37:19 vps.server.com tailscaled[741900]: health(warnable=wantrunning-false): error: Tailscale is stopped.\n",
              "exit": 0,
              "description": "Start tailscaled after creating TUN",
              "truncated": false
            },
            "title": "Start tailscaled after creating TUN",
            "time": {
              "start": 1780666641079,
              "end": 1780666641094
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 28222,
            "input": 44,
            "output": 104,
            "reasoning": 42,
            "cache": {
              "write": 0,
              "read": 28032
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e9800aae1001eXTu5yyhzEqTf2",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 28898,
          "input": 620,
          "output": 93,
          "reasoning": 25,
          "cache": {
            "write": 0,
            "read": 28160
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666641121,
          "completed": 1780666653338
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "It's running now. Now I need to authenticate. Let me run `tailscale up` to get the auth URL.",
          "time": {
            "start": 1780666642426,
            "end": 1780666642734
          }
        },
        {
          "type": "text",
          "text": "Tailscale is running. Now authenticate:",
          "time": {
            "start": 1780666642739,
            "end": 1780666643238
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_mGa6LsyfpOIdFgvAmv5v1464",
          "state": {
            "status": "completed",
            "input": {
              "command": "tailscale up 2>&1",
              "description": "Start Tailscale auth",
              "timeout": 10000
            },
            "output": "\nTo authenticate, visit:\n\n\thttps://login.tailscale.com/a/13495df301709b\n\ncontext canceled\n\n\n<shell_metadata>\nshell tool terminated command after exceeding timeout 10000 ms. If this command is expected to take longer and is not waiting for interactive input, retry with a larger timeout value in milliseconds.\n</shell_metadata>",
            "metadata": {
              "output": "\nTo authenticate, visit:\n\n\thttps://login.tailscale.com/a/13495df301709b\n\ncontext canceled\n",
              "exit": null,
              "description": "Start Tailscale auth",
              "truncated": false
            },
            "title": "Start Tailscale auth",
            "time": {
              "start": 1780666653310,
              "end": 1780666653323
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 28898,
            "input": 620,
            "output": 93,
            "reasoning": 25,
            "cache": {
              "write": 0,
              "read": 28160
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e9800daaa001pMl0nhJHW0MKeO",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e97ff8bb4001jcQwrdUIVKHP6M",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 29076,
          "input": 181,
          "output": 50,
          "reasoning": 45,
          "cache": {
            "write": 0,
            "read": 28800
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666653354,
          "completed": 1780666656128
        },
        "finish": "stop"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Got the URL. The user needs to open this link in their browser to authenticate with their Google/GitHub/Microsoft/etc account. After they authenticate, Tailscale will connect.\n\nLet me tell them to open the URL.",
          "time": {
            "start": 1780666655037,
            "end": 1780666655588
          }
        },
        {
          "type": "text",
          "text": "Open this in your browser to log in (Google/GitHub/Microsoft/any account works):\n\n```\nhttps://login.tailscale.com/a/13495df301709b\n```\n\nCome back after you authenticate and I'll finish the setup!",
          "time": {
            "start": 1780666655640,
            "end": 1780666656050
          }
        },
        {
          "reason": "stop",
          "type": "step-finish",
          "tokens": {
            "total": 29076,
            "input": 181,
            "output": 50,
            "reasoning": 45,
            "cache": {
              "write": 0,
              "read": 28800
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98027320001EKKJ1EumHUTS4E",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780666757933
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "okay done"
        }
      ]
    },
    {
      "id": "msg_e980273590016XcYQNPn2r0Y0T",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e98027320001EKKJ1EumHUTS4E",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 29170,
          "input": 27,
          "output": 70,
          "reasoning": 17,
          "cache": {
            "write": 0,
            "read": 29056
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666757977,
          "completed": 1780666760376
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The user authenticated. Let me check the Tailscale status to get the IP address.",
          "time": {
            "start": 1780666759613,
            "end": 1780666760055
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_kexvTx1ZW9ZwJ2XEQ66v9866",
          "state": {
            "status": "completed",
            "input": {
              "command": "tailscale status 2>&1",
              "description": "Check Tailscale status and IP"
            },
            "output": "100.67.221.82  vps  willem.haesaert@  linux  -  \n",
            "metadata": {
              "output": "100.67.221.82  vps  willem.haesaert@  linux  -  \n",
              "exit": 0,
              "description": "Check Tailscale status and IP",
              "truncated": false
            },
            "title": "Check Tailscale status and IP",
            "time": {
              "start": 1780666760326,
              "end": 1780666760351
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 29170,
            "input": 27,
            "output": 70,
            "reasoning": 17,
            "cache": {
              "write": 0,
              "read": 29056
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e98027cc5001KJNH54PysG7u6y",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e98027320001EKKJ1EumHUTS4E",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "input": 0,
          "output": 0,
          "reasoning": 0,
          "cache": {
            "read": 0,
            "write": 0
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780666760389
        }
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Tailscale is connected. The VPS has the Tailscale IP `100.67.221.82`. Now I need to:\n\n1. Rebind opencode to `0.0.0.0` so it's accessible via the Tailscale IP\n2. Create a systemd service for tailscaled (it's already enabled)\n3. Maybe set up a systemd service for opencode to ensure it restarts\n\nActually, opencode is already running on `--port 5051` bound to `127.0.0.1`. Since Tailscale creates a virtual network interface, we could bind to `0.0.0.0` and it'll be accessible only via Tailscale IP (since the Tailscale interface is separate). But it's safer to bind to `0.0.0.0` with the Tailscale IP being the only accessible route from outside.\n\nActually, the safest approach: restart opencode bound to `0.0.0.0` so it listens on all interfaces. Since this is only accessible via the Tailscale IP (the public internet can't reach it unless the firewall allows it), it's secure enough — Tailscale handles the encryption and auth.\n\nOr better: bind opencode to the Tailscale IP specifically (`100.67.221.82`) so it only listens on the Tailscale interface. Let me do that.\n\nLet me kill the current opencode on port 5051 and restart it bound to the Tailscale IP.",
          "time": {
            "start": 1780666761676,
            "end": 1780666765857
          }
        },
        {
          "type": "text",
          "text": "Tailscale is connected. VPS's Tailscale IP: **100.67.221.82**\n\nNow I'll rebind opencode to the Tailscale IP so it's only accessible through your private network:",
          "time": {
            "start": 1780666765959,
            "end": 1780666766212
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_v6i6wCgnBJydAJfYegs68598",
          "state": {
            "metadata": {
              "output": "",
              "description": "Restart opencode on Tailscale IP"
            },
            "status": "running",
            "input": {
              "command": "kill 740662 2>/dev/null; sleep 1; nohup opencode serve --port 5051 --hostname 100.67.221.82 --print-logs > /dev/null 2>&1 &\nsleep 2; ss -tlnp | grep 5051",
              "description": "Restart opencode on Tailscale IP",
              "timeout": 10000
            },
            "time": {
              "start": 1780666766195
            }
          }
        }
      ]
    },
    {
      "id": "msg_e98322ebb001CdnU9s3eMMI4kA",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "role": "user",
        "time": {
          "created": 1780669886225
        },
        "agent": "build",
        "model": {
          "providerID": "opencode",
          "modelID": "deepseek-v4-flash-free"
        },
        "summary": {
          "diffs": []
        }
      },
      "parts": [
        {
          "type": "text",
          "text": "is it done?"
        }
      ]
    },
    {
      "id": "msg_e98322f6c001aaoxvglTYhbtOC",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e98322ebb001CdnU9s3eMMI4kA",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "total": 29817,
          "input": 26,
          "output": 78,
          "reasoning": 17,
          "cache": {
            "write": 0,
            "read": 29696
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780669886316,
          "completed": 1780669892303
        },
        "finish": "tool-calls"
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "The tool execution was interrupted. Let me check what happened with the opencode process.",
          "time": {
            "start": 1780669888851,
            "end": 1780669889131
          }
        },
        {
          "type": "text",
          "text": "Let me check:",
          "time": {
            "start": 1780669889136,
            "end": 1780669891453
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_Ss6AJMMzLzwDnIQb2IVd4757",
          "state": {
            "status": "completed",
            "input": {
              "command": "ss -tlnp | grep 5051",
              "description": "Check opencode on port 5051"
            },
            "output": "LISTEN 0      128                      127.0.0.1:5051       0.0.0.0:*    users:((\"opencode\",pid=742463,fd=17))                   \n",
            "metadata": {
              "output": "LISTEN 0      128                      127.0.0.1:5051       0.0.0.0:*    users:((\"opencode\",pid=742463,fd=17))                   \n",
              "exit": 0,
              "description": "Check opencode on port 5051",
              "truncated": false
            },
            "title": "Check opencode on port 5051",
            "time": {
              "start": 1780669892247,
              "end": 1780669892277
            }
          }
        },
        {
          "reason": "tool-calls",
          "type": "step-finish",
          "tokens": {
            "total": 29817,
            "input": 26,
            "output": 78,
            "reasoning": 17,
            "cache": {
              "write": 0,
              "read": 29696
            }
          },
          "cost": 0
        }
      ]
    },
    {
      "id": "msg_e983246e9001ChMwP0IBBxALdN",
      "session_id": "ses_16808bbe6ffe4ZTwhevj6Navo8",
      "data": {
        "parentID": "msg_e98322ebb001CdnU9s3eMMI4kA",
        "role": "assistant",
        "mode": "build",
        "agent": "build",
        "path": {
          "cwd": "/",
          "root": "/"
        },
        "cost": 0,
        "tokens": {
          "input": 0,
          "output": 0,
          "reasoning": 0,
          "cache": {
            "read": 0,
            "write": 0
          }
        },
        "modelID": "deepseek-v4-flash-free",
        "providerID": "opencode",
        "time": {
          "created": 1780669892329
        }
      },
      "parts": [
        {
          "type": "step-start"
        },
        {
          "type": "reasoning",
          "text": "Still bound to 127.0.0.1. The previous command got interrupted. Let me try again properly.",
          "time": {
            "start": 1780669893897,
            "end": 1780669894319
          }
        },
        {
          "type": "tool",
          "tool": "bash",
          "callID": "call_00_TwrGjahwFDZ9S6IvkS5R7358",
          "state": {
            "metadata": {
              "output": "",
              "description": "Restart opencode on Tailscale IP"
            },
            "status": "running",
            "input": {
              "command": "kill 742463 2>/dev/null; sleep 1; opencode serve --port 5051 --hostname 100.67.221.82 --print-logs > /dev/null 2>&1 &\nsleep 2; ss -tlnp | grep 5051",
              "description": "Restart opencode on Tailscale IP",
              "timeout": 10000
            },
            "time": {
              "start": 1780669894997
            }
          }
        }
      ]
    }
  ]
}