This repository has been archived on 2026-05-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ct111-dev/coder/templates/mcp-sandbox/main.tf
T

73 lines
1.7 KiB
Terraform

terraform {
required_providers {
coder = { source = "coder/coder" }
docker = { source = "kreuzwerker/docker" }
}
}
provider "docker" {}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
locals {
username = data.coder_workspace_owner.me.name
}
resource "coder_agent" "main" {
arch = "amd64"
os = "linux"
startup_script = <<-EOT
set -e
mkdir -p ~/sandbox ~/plots
echo "ready: $(python --version) | sci stack pre-baked"
EOT
metadata {
display_name = "CPU"
key = "cpu"
script = "coder stat cpu"
interval = 10
timeout = 1
}
metadata {
display_name = "RAM"
key = "ram"
script = "coder stat mem"
interval = 10
timeout = 1
}
}
resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = "coder-mcp-sandbox:latest" # built locally; do not pull
name = "coder-${local.username}-${lower(data.coder_workspace.me.name)}-sbx"
hostname = data.coder_workspace.me.name
entrypoint = ["sh", "-c", coder_agent.main.init_script]
env = [
"CODER_AGENT_TOKEN=${coder_agent.main.token}",
"OPENAI_API_KEY=sk-tapirnase",
"OPENAI_BASE_URL=http://192.168.1.40:14000/v1",
"OPENAI_MODEL=qwen3-coder-30b-a3b-instruct",
"AIDER_MODEL=qwen3-coder-30b-a3b-instruct",
"AIDER_WEAK_MODEL=mistral-small-latest",
"EMBEDDING_MODEL=text-embedding-3-large",
"MPLBACKEND=Agg",
]
# ephemeral home — fresh state every spin
# (drop the `volumes` block entirely to keep tmpfs-like behavior)
devices { host_path = "/dev/dri/renderD128" }
memory = 4096
cpu_shares = 512
host {
host = "host.docker.internal"
ip = "host-gateway"
}
}