Coder Workspace Environment (hahomelabs.com)
Context for projects running in this Coder workspace environment at hahomelabs.com.
Environment
You are running in a Coder development workspace:
| Property | Value |
|---|---|
| OS | Linux (Ubuntu/Debian-based) |
| Architecture | x86_64 |
| Container Runtime | Docker-in-Docker capability via envbox |
| Infrastructure | Kubernetes-managed workspace with persistent storage |
| Networking | Internal cluster networking with port forwarding capabilities |
| Shell | Bash |
| System Package Manager | apt/apt-get |
Available Tools
The following tools are pre-installed and available in this workspace:
| Tool | Command | Description |
|---|---|---|
| Docker | docker, docker-compose | Full container management capability |
| Kubernetes CLI | kubectl | Cluster access and management (requires VPN) |
| GitHub CLI | gh | Pre-configured with auto OAuth token refresh |
| VS Code Server | IDE with extensions | |
| Coder CLI | coder | Coder-specific workspace operations |
| PM2 | pm2 | Process manager for keeping Node.js services running in the background |
| Node.js (with pnpm) | node, pnpm | Node.js runtime and pnpm package manager |
| Convex CLI | npx convex | Available when Convex feature is enabled |
| Claude Code | claude | AI-powered CLI (custom installation via base image) |
| ccusage | ccusage | Claude Code usage monitoring utility |
| OpenCode | opencode | AI CLI tool |
Service URLs
Services use this URL pattern:
https://<service>--<workspace-name>--<username>.coder.hahomelabs.com
| Service | Port | URL Example |
|---|---|---|
| Dev server | 3000 | https://app--myproject--johndoe.coder.hahomelabs.com |
| Prod/preview | 3010 | https://app-prod--myproject--johndoe.coder.hahomelabs.com |
IMPORTANT: Always use full URLs. Do NOT use localhost: URLs as they cause issues with remote services, authentication, cookies, and cross-origin requests.
Optional Features (Enabled at Workspace Creation)
PostgreSQL (CloudNativePG)
When enabled, these environment variables are available:
POSTGRES_HOST # <workspace-full-name>-db-rw POSTGRES_PORT # 5432 POSTGRES_DATABASE # app POSTGRES_USER # app POSTGRES_PASSWORD # Auto-generated DATABASE_URL # postgres://app:password@host:port/app DIRECT_URL # postgres://app:password@host:port/app
Database details:
- •Database name:
app - •User:
app - •Read-write service:
${workspace_full_name}-db-rw - •Supports workspace-to-workspace cloning (same user only)
- •Backup bucket:
workspace-cnpg-${owner}-${name}-${short_id}
S3 Storage (Ceph)
When enabled, these environment variables are available:
S3_ENDPOINT # https://s3.us-central-1.hahomelabs.com
S3_REGION # us-central-1
S3_BUCKET # workspace-${owner}-${name}-${short_id}
AWS_S3_ENDPOINT # Same as S3_ENDPOINT
AWS_BUCKET # Same as S3_BUCKET
S3_BACKUP_ENDPOINT # https://s3.us-central-1.hahomelabs.com
S3_BACKUP_BUCKET # workspace-cnpg-${owner}-${name}-${short_id}
S3 details:
- •Endpoint:
https://s3.us-central-1.hahomelabs.com - •Region:
us-central-1 - •Max bucket size: 5GB
- •Supports workspace-to-workspace cloning
Convex Backend
When enabled:
- •Dashboard (
/convex):https://convex--<workspace>--<user>.coder.hahomelabs.com - •API (
/convex-api):https://convex-api--<workspace>--<user>.coder.hahomelabs.com - •Site Proxy (
/convex-site):https://convex-site--<workspace>--<user>.coder.hahomelabs.com - •S3 Proxy (
/convex-s3-proxy):https://convex-s3-proxy--<workspace>--<user>.coder.hahomelabs.com - •Convex CLI available via
npx convex - •Uses internal PostgreSQL and S3
Nhost Backend
When enabled:
- •Dashboard (
/nhost-dashboard):https://nhost-dashboard--<workspace>--<user>.coder.hahomelabs.com - •Hasura Console (
/hasura):https://hasura--<workspace>--<user>.coder.hahomelabs.com - •MailHog (
/mailhog):https://mailhog--<workspace>--<user>.coder.hahomelabs.com - •Auth (hidden):
https://nhost-auth--<workspace>--<user>.coder.hahomelabs.com - •Functions (hidden):
https://nhost-functions--<workspace>--<user>.coder.hahomelabs.com - •Storage (hidden):
https://nhost-storage--<workspace>--<user>.coder.hahomelabs.com - •GraphQL (hidden):
https://nhost-graphql--<workspace>--<user>.coder.hahomelabs.com - •Uses internal PostgreSQL and S3
LLM Gateway
AI requests route through LiteLLM proxy with budget controls:
# Environment variables (ask user before accessing) OPENAI_BASE_URL # https://llm-gateway.hahomelabs.com/v1 LITELLM_BASE_URL # https://llm-gateway.hahomelabs.com ANTHROPIC_AUTH_TOKEN # Per-user API key (development) LITELLM_APP_API_KEY # Per-user API key (applications)
Model mapping:
- •Haiku → "small" (fast, low cost)
- •Sonnet → "medium" (balanced)
- •Opus → "large" (max capability)
Package Managers
System packages
sudo apt-get update sudo apt-get install <package>
Node.js
Check lockfile to determine which to use:
- •
pnpm-lock.yaml→ Usepnpm - •
yarn.lock→ Useyarn - •
package-lock.json→ Usenpm - •
bun.lockb→ Usebun
Background Services
PM2 (Node.js processes)
pm2 status # Check status pm2 logs # View all logs pm2 logs <app> # View app logs pm2 logs --lines 50 --nostream # View recent log entries pm2 restart <app> # Restart app
Docker
docker ps # List containers docker logs <container> docker logs -f <container> # Follow logs
Workspace Scripts
| Script | Location | When it runs |
|---|---|---|
| Startup | start.sh | Workspace starts |
| Shutdown | stop.sh | Workspace stops |
Scripts are executed automatically by the Coder agent. Use them for:
- •Starting development servers with PM2
- •Running database migrations
- •Setting up environment-specific configurations
- •Graceful shutdown of services
Note: Startup script runs with 60-second timeout, then backgrounds if still running.
Platform-Specific Considerations
Docker Usage
- •Docker commands work normally (this is not Docker Desktop)
- •No special port mapping or host configurations needed
- •Docker-in-Docker means containers run inside the workspace environment
File Paths
- •Use standard Linux paths (not Windows or macOS formats)
- •Relative paths for project files:
src/components/Header.tsx - •Absolute paths for system files:
/usr/local/bin/tool
Hardware Optimizations
- •Target x86_64 architecture for any hardware-specific optimizations
- •Do NOT use ARM/Apple Silicon-specific flags or binaries
- •Modern Intel/AMD processor features are available
Environment Variables
CRITICAL: Before using or changing ANY environment variable, you MUST:
- •Ask the user for permission - "May I check the environment variables?" or "May I use/change the X environment variable?"
- •Explain what you need - Describe which variable(s) you need to access and why
- •Wait for explicit approval - Do not proceed without user consent
To check available environment variables:
env | grep -i <pattern> # Search for specific variables env # List all environment variables printenv # Alternative way to list all echo $VAR_NAME # Check specific variable
Never modify environment variables without explicit user permission, as they may affect:
- •API authentication and routing
- •Service connections
- •Model selection behavior
- •Workspace functionality
Network Services
- •Services run on standard Linux ports
- •No macOS/Windows port conflicts to consider
- •Internal cluster networking with port forwarding for external access
Workspace Cloning
- •PostgreSQL cloning: Restores from source workspace backup
- •S3 cloning: Syncs data from source workspace bucket
- •Restriction: Can only clone from own workspaces (same user)
- •Limitation: Source workspace name cannot contain hyphens
GitHub CLI
GitHub CLI (gh) is pre-configured with automatic OAuth token refresh. The token refreshes automatically via a wrapper function in .bashrc.
Gotchas
- •File paths: Use standard Linux paths (
/home/coder/project) - •Architecture: x86_64 only (no ARM binaries)
- •Environment variables: Ask user before accessing
- •Service URLs: Use full URLs, not localhost
- •Disk space: Home directory is persistent, size configurable
- •Workspace cloning: Source workspaces with hyphens in name cannot be used
- •Database: PostgreSQL database name is always
app, user is alwaysapp
Capabilities
You can help with:
- •Code Development: Writing, reviewing, and debugging code
- •Concept Explanations: Explaining complex programming concepts
- •Best Practices: Suggesting optimizations and patterns
- •Architecture: Helping with design decisions
- •Troubleshooting: Debugging technical issues
- •Documentation: Providing comments and docs
- •DevOps: Infrastructure and deployment tasks
- •Containers: Docker and Kubernetes operations
Response Guidelines
- •Provide clear, concise, and accurate responses
- •Consider the context of the workspace and the user's current task
- •Account for the Linux x86_64 environment in all recommendations
- •For Coder CLI commands and workspace management, reference the
coder-workspace-managementskill