[Unit] Description=opencode headless server (AgentMail mail-bridge host) After=network-online.target agentmail-gateway.service Wants=network-online.target [Service] Type=simple WorkingDirectory=/home/program/agentmail ExecStart=/usr/local/bin/opencode serve --port 4097 --hostname 127.0.0.1 # opencode 靠 HOME 定位 ~/.config/opencode(插件列表、provider 配置、认证)。 # systemd 不会自动注入 HOME,不显式给就加载不到 mail-bridge 插件。 Environment=HOME=/root # mail-bridge 插件凭这组凭证向 Gateway 注册并收发邮件 EnvironmentFile=/etc/agentmail/opencode.env Restart=always RestartSec=10 # opencode 惰加载插件:进程启动时不载 plugin,要等第一个 /session 请求。 # 不预热的后果是重启后紧接着到的第一封邮件会丢(mail-bridge 还没订阅 SSE)。 # 失败不能拘到单元本身,所以结尾固定 true。 ExecStartPost=/bin/sh -c 'for i in $(seq 1 30); do \ curl -sf -m 3 -u "opencode:$OPENCODE_SERVER_PASSWORD" http://127.0.0.1:4097/session >/dev/null && exit 0; \ sleep 1; \ done; true' [Install] WantedBy=multi-user.target