resource "coder_app" "pgadmin" { count = local.services_enabled && data.coder_parameter.enable_pgadmin.value ? 1 : 0 agent_id = coder_agent.main.id slug = "pgadmin" display_name = "pgAdmin" url = "http://pgadmin-${local.workspace_id}:5050" icon = "/icon/postgres.svg" subdomain = false share = "owner" healthcheck { url = "http://pgadmin-${local.workspace_id}:5050" interval = 15 threshold = 5 } } resource "coder_app" "qdrant" { count = local.services_enabled ? 1 : 0 agent_id = coder_agent.main.id slug = "qdrant" display_name = "Qdrant" url = "http://qdrant-${local.workspace_id}:6333" icon = "/icon/database.svg" subdomain = false share = "owner" healthcheck { url = "http://qdrant-${local.workspace_id}:6333/health" interval = 30 threshold = 10 } } resource "coder_app" "marimo" { count = data.coder_parameter.enable_marimo.value ? 1 : 0 agent_id = coder_agent.main.id slug = "marimo" display_name = "Marimo" url = "http://localhost:8888" icon = "/icon/python.svg" subdomain = false share = "owner" group = "Development Services" } locals { dev_ports = { "dev-3000" = { display = "Web Dev (3000)" url = "http://localhost:3000" icon = "/icon/javascript.svg" } "api-8000" = { display = "API (8000)" url = "http://localhost:8000" icon = "/icon/node.svg" } "vite-5173" = { display = "Vite (5173)" url = "http://localhost:5173" icon = "/icon/typescript.svg" } } } resource "coder_app" "dev_ports" { for_each = local.dev_endpoints_enabled ? local.dev_ports : {} agent_id = coder_agent.main.id slug = each.key display_name = each.value.display url = each.value.url icon = each.value.icon subdomain = true share = "owner" group = "Development Services" } resource "coder_app" "claude_cli" { count = data.coder_parameter.enable_ai_tools.value ? 1 : 0 agent_id = coder_agent.main.id slug = "claude-cli" display_name = "Claude Code" icon = "/icon/claude.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && claude --dangerously-skip-permissions\"'" group = "AI Tools" order = 10 } resource "coder_app" "codex_cli" { count = data.coder_parameter.enable_ai_tools.value ? 1 : 0 agent_id = coder_agent.main.id slug = "codex-cli" display_name = "Codex" icon = "/icon/openai.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && codex --dangerously-bypass-approvals-and-sandbox\"'" group = "AI Tools" order = 20 } resource "coder_app" "gemini_cli" { count = data.coder_parameter.enable_ai_tools.value ? 1 : 0 agent_id = coder_agent.main.id slug = "gemini-cli" display_name = "Gemini CLI" icon = "/icon/google.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && gemini\"'" group = "AI Tools" order = 30 } resource "coder_app" "superfile" { agent_id = coder_agent.main.id slug = "superfile" display_name = "File Explorer" icon = "/icon/folder.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && spf\"'" group = "Terminal Tools" order = 10 } resource "coder_app" "lazygit" { agent_id = coder_agent.main.id slug = "lazygit" display_name = "Git Manager" icon = "/icon/git.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && lazygit\"'" group = "Terminal Tools" order = 20 } resource "coder_app" "lazydocker" { agent_id = coder_agent.main.id slug = "lazydocker" display_name = "Docker Manager" icon = "/icon/docker.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; cd /workspaces && lazydocker\"'" group = "Terminal Tools" order = 30 } resource "coder_app" "btop" { agent_id = coder_agent.main.id slug = "btop" display_name = "System Monitor" icon = "/icon/chart.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; btop\"'" group = "Terminal Tools" order = 40 } resource "coder_app" "logs_viewer" { agent_id = coder_agent.main.id slug = "logs-viewer" display_name = "Log Viewer" icon = "/icon/terminal.svg" command = "bash -lc 'exec sudo -u coder -i bash -c \"export GEM_HOME=/home/coder/.gem; export GEM_PATH=/home/coder/.gem; echo \\\"=== Workspace Logs ===\\\" && tail -f /tmp/*.log 2>/dev/null || echo \\\"No log files found in /tmp/\\\"\"'" group = "Terminal Tools" order = 50 }