Development environment container for Ai
  • Shell 67.4%
  • Dockerfile 32.6%
Find a file
2026-09-19 17:57:31 +02:00
.pi kimi auth update 2026-09-10 11:08:23 +02:00
.ssh ssh key rename 2026-07-27 16:10:41 +02:00
.agent.env fix: correct the embedding model, and start the cctx daemon before the harness 2026-09-02 15:44:55 +02:00
.claude.json Bun cache permission fix and cleanup 2026-09-19 15:30:10 +02:00
.gitignore Pi tmux support and settings, Claude env updates 2026-09-02 13:23:46 +02:00
authorized_keys add ipad ssh key 2026-07-31 21:56:38 +02:00
code-session.sh remove claude tools and set cctx account in code-session.sh script 2026-09-13 23:17:47 +02:00
docker-compose.yml Ensure PATH and HOME are explicitly set for this su session in 2026-09-19 17:57:31 +02:00
Dockerfile streamline permissions and removing deprecated lines 2026-09-19 17:10:41 +02:00
forge-clone.sh Update forge-clone.sh 2026-07-27 15:58:54 +02:00
PI.md first commit 2026-07-25 20:09:44 +02:00
README.md first commit 2026-07-25 20:09:44 +02:00
startup.sh Ensure PATH and HOME are explicitly set for this su session in 2026-09-19 17:57:31 +02:00
tmux.conf add modern extended keys format (csi-u and not xterm default) to tmux 2026-09-10 17:25:45 +02:00

Start Claude Code

Start the container as a daemon

docker compose -f docker-compose.claude.yml up -d

Then connect via cmux (once the SSH stack ships)

cmux ssh claude@localhost -p 2222

Build first (not needed, just do it manually)

Build with latest everything (only rebuilds layers where versions changed)

./build.sh

Or pin a specific version

CLAUDE_VERSION=2.1.31 ./build.sh

Run Docker (legacy via run)

For good signal handling, terminal resizing and using PID 1 use the following run command: docker compose -f docker-compose.claude.yml run --service-ports --rm -it claude claude

OR

docker compose -f docker-compose.claude.yml run --service-ports --rm -it claude claude --dangerously-skip-permissions --verbose

Add a project name for task sharing between instances CLAUDE_CODE_TASK_LIST_ID=my-project claude

Run a side instance:

docker compose -f docker-compose.claude.yml exec claude claude

Enter through bash alongside claude code through this command:

docker compose -f docker-compose.claude.yml exec --user claude claude bash

Temporary stale LSP fix dropping diagnostics entirely

/marketplace add iloom-ai/stay-fresh-lsp-proxy /plugin install stay-fresh-typescript@stay-fresh-lsp-proxy /plugin install stay-fresh-python@stay-fresh-lsp-proxy /plugin install stay-fresh-rust@stay-fresh-lsp-proxy

Claude Code Viewer Dashboard

NODE_ENV=production bunx @kimuson/claude-code-viewer@latest --hostname 0.0.0.0 --port 3400 --claude-dir ~/.claude

CCUsage statusline

Add to settings.json { "statusLine": { "type": "command", "command": "bun x ccusage statusline", "padding": 0 } }

Language Server Protocol (LSP)

Activate through ENV

ENABLE_LSP_TOOL=1

Install language server

TypeScript

npm install -g typescript-language-server typescript

Python

pip install python-lsp-server # or pip install pyright

Go

go install golang.org/x/tools/gopls@latest

Rust

rustup component add rust-analyzer

Add .lsp.json to root

{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescriptreact"
    }
  },
  "python": {
    "command": "pylsp"
  }
}

replace pylsp with pyright-langserver for pyright

TweakCC

Theme editor

bunx tweakcc

Apply tweakcc patches

bunx tweakcc --apply

Setup LSP inside Claude Code

Add marketplace

/marketplace add https://github.com/Piebald-AI/claude-code-lsps

Install plugins

/plugin install vtsls@claude-code-lsps # JavaScript/TypeScript /plugin install pyright@claude-code-lsps # Python /plugin install phpactor@claude-code-lsps # PHP /plugin install sourcekit-lsp@claude-code-lsps # Swift (if installed)

Important Notes

  • Official vs Community: Based on the search results, the official LSP support has some issues (plugins not being recognized properly). The community approach with tweakcc is reported to be more robust.
  • Swift Complexity: Swift LSP requires the full Swift toolchain (~1GB+), which significantly increases image size. Consider if you really need it.
  • Plugin Configuration Persistence: Plugin installations create files in ~/.claude/. You might want to volume mount this directory or create a setup script that runs on container start.
  • Verification: After setup, you can verify LSP is working by asking Claude to use features like "go to definition" or "find references" in your code.