feat: improve dockerization #209
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Competitor
Kind/Documentation
Kind/Enhancement
Kind/Epic
Kind/Feature
Kind/Security
Kind/Story
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Scope/Core
Scope/Cross-Plugin
Scope/Plugin-System
Scope/Single-Plugin
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ultanio/cobot!209
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "David/cobot:feature/dockerization"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds Docker support for running Cobot in a container via docker-compose, including a Dockerfile fix for file ownership, a new docker-compose.yml, .env.example and quickstart documentation for the Docker workflow. Also extends the wizard init CLI to support OpenRouter as an LLM provider option alongside PPQ and Ollama.
feature/dockerizationto feat: improve dockerizationReview: Docker + OpenRouter wizard support
Clean PR — small, focused, and the quickstart docs are well-written. Some observations:
👍 What works well
chownbeforeUSER cobot. Good practice.import cobot) is a reasonable smoke test.docker compose run cobot wizard init --homefor interactive setup inside the container is a nice UX.ppqprovider config with just a differentapi_base. No new provider abstraction needed.⚠️ Issues
1.
.env.examplenames the keyPPQ_API_KEYfor OpenRouterThis is confusing — someone using OpenRouter has to set a variable called
PPQ_API_KEYwith an OpenRouter key. The wizard correctly distinguishes the two providers, but the env var naming leaks the abstraction. Consider either:LLM_API_KEY, or# Works for both PPQ and OpenRouter (same config path)2. Wizard hardcodes
anthropic/claude-sonnet-4as OpenRouter defaultThis is a specific (expensive) model. For a default in a setup wizard, something cheaper like
anthropic/claude-3.5-haikuoropenai/gpt-4o-miniwould be more beginner-friendly. Users who want Sonnet will know to type it.3.
docker-compose.ymlmounts./workspace:/workspacebut Dockerfile setsCOBOT_WORKSPACE=/workspaceThis works, but the workspace dir isn't created in the Dockerfile. If
cobot runtries to write there before any volume is mounted (e.g., running without compose), it'll fail with a permission error since the non-root user can't create/workspace. AddRUN mkdir -p /workspace && chown cobot:cobot /workspaceto the Dockerfile.4. Healthcheck doesn't verify runtime
python -c "import cobot"only checks the package is installed, not that the agent is running. For arestart: unless-stoppedservice, a better healthcheck would be something likecobot status --jsonand checking therunningfield, or a simple PID file check.5.
.gitignoreadditions look like a full rewrite, not incrementalThe diff shows +10 lines but the file content is a complete
.gitignore(50+ lines). Was this file new or did it replace an existing one? If it replaced an existing one, make sure nothing important was dropped. If it's new — looks comprehensive and correct.📝 Minor
config["provider"] = "ppq"whenprovider == "openrouter"— this is the right internal mapping, but a comment explaining why would help future readers:# OpenRouter uses same config structure as PPQ (OpenAI-compatible API)769134210— that's a real user ID (k9ert's). Consider using a clearly fake one like123456789to avoid confusion.Verdict
Good incremental improvement. The Docker workflow is clean and the OpenRouter support slots in naturally. Fix the workspace directory permissions (#3) and consider the naming confusion (#1). The rest are polish items.
@k9ert can we merge this?