@@ -131,6 +131,11 @@ resource "coder_script" "claude_code" {
131
131
npm install -g @anthropic-ai/claude-code@${ var . claude_code_version }
132
132
fi
133
133
134
+ # Hardcoded for now: install AgentAPI
135
+ wget https://github.com/coder/agentapi/releases/download/preview/agentapi-linux-amd64More actions
136
+ chmod +x agentapi-linux-amd64
137
+ sudo mv agentapi-linux-amd64 /usr/local/bin/agentapi
138
+
134
139
if [ "${ var . experiment_report_tasks } " = "true" ]; then
135
140
echo "Configuring Claude Code to report tasks via Coder MCP..."
136
141
coder exp mcp configure claude-code ${ var . folder }
@@ -166,8 +171,22 @@ resource "coder_script" "claude_code" {
166
171
export LANG=en_US.UTF-8
167
172
export LC_ALL=en_US.UTF-8
168
173
169
- # Create a new tmux session in detached mode
170
- tmux new-session -d -s claude-code -c ${ var . folder } "claude --dangerously-skip-permissions \"$CODER_MCP_CLAUDE_TASK_PROMPT\""
174
+ tmux new-session -d -s claude-code-agentapi -c ${ var . folder } 'agentapi server -- bash -c "claude --dangerously-skip-permissions \"$CODER_MCP_CLAUDE_TASK_PROMPT\" | tee -a \"$HOME/.claude-code.log\""; exec bash'More actions
175
+ echo "Waiting for agentapi server to start on port 3284..."
176
+ for i in $(seq 1 15); do
177
+ if lsof -i :3284 | grep -q 'LISTEN'; then
178
+ echo "agentapi server started on port 3284."
179
+ break
180
+ fi
181
+ echo "Waiting... ($i/15)"
182
+ sleep 1
183
+ done
184
+ if ! lsof -i :3284 | grep -q 'LISTEN'; then
185
+ echo "Error: agentapi server did not start on port 3284 after 15 seconds."
186
+ exit 1
187
+ fi
188
+ tmux new-session -d -s claude-code -c ${ var . folder } "agentapi attach"
189
+
171
190
172
191
fi
173
192
@@ -217,6 +236,15 @@ resource "coder_script" "claude_code" {
217
236
run_on_start = true
218
237
}
219
238
239
+ resource "coder_app" "claude_code_web" {
240
+ slug = " claude-code-web"
241
+ display_name = " Claude Code Web"
242
+ agent_id = var. agent_id
243
+ url = " http://localhost:3284/chat/embed"
244
+ icon = var. icon
245
+ subdomain = true
246
+ }
247
+
220
248
resource "coder_app" "claude_code" {
221
249
slug = " claude-code"
222
250
display_name = " Claude Code"
@@ -229,6 +257,12 @@ resource "coder_app" "claude_code" {
229
257
export LC_ALL=en_US.UTF-8
230
258
231
259
if [ "${ var . experiment_use_tmux } " = "true" ]; then
260
+
261
+ if ! tmux has-session -t claude-code-agentapi 2>/dev/null; then
262
+ echo "Starting a new Claude Code agentapi tmux session." | tee -a "$HOME/.claude-code.log"
263
+ tmux new-session -d -s claude-code-agentapi -c ${ var . folder } 'agentapi server -- bash -c "claude --dangerously-skip-permissions | tee -a \"$HOME/.claude-code.log\""; exec bash'
264
+ fi
265
+
232
266
if tmux has-session -t claude-code 2>/dev/null; then
233
267
echo "Attaching to existing Claude Code tmux session." | tee -a "$HOME/.claude-code.log"
234
268
tmux attach-session -t claude-code
0 commit comments