init: Coder compose + templates + act-runner
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user