Skip to content

feat: Coolify deployment support and Telegram UI/UX enhancements#239

Closed
mrbeandev wants to merge 12 commits intosipeed:mainfrom
mrbeandev:feat/coolify-and-telegram-enhancements
Closed

feat: Coolify deployment support and Telegram UI/UX enhancements#239
mrbeandev wants to merge 12 commits intosipeed:mainfrom
mrbeandev:feat/coolify-and-telegram-enhancements

Conversation

@mrbeandev
Copy link

@mrbeandev mrbeandev commented Feb 15, 2026

This PR introduces comprehensive support for Coolify deployment and several improvements to the Telegram channel to enhance the self-hosting experience.

☁️ Coolify Deployment

  • Adds COOLIFY.md guide with 3 configuration methods (JSON, Env Vars, File).
  • Adds entrypoint-coolify.sh to dynamically generate config.json from environment variables at runtime.
  • Adds Dockerfile.coolify and docker-compose-coolify.yml optimized for Coolify's environment.
  • Support for full JSON configuration via PICOCLAW_CONFIG_JSON environment variable.

🤖 Telegram Enhancements

  • Persistent Typing Indicator: Implemented a repeating goroutine that sends the 'typing' status every 4s while the AI is thinking, preventing the status from expiring (fixing the 5s Telegram API limit).
  • Auto-Command Registration: The bot now automatically registers its commands (/model, /models) with Telegram on startup using setMyCommands.
  • Unified /model Command: Supports a new provider/model syntax (e.g., /model vllm/qwen3-coder-next:cloud) to switch both the backend API and the model name in a single message.
  • Dynamic /models List: The /models command now dynamically reads the loaded configuration to show actually available providers and the currently active model.

⚙️ Core Improvements

  • Refactored AgentLoop to store a reference to the configuration, allowing for hot-switching of providers and models without needing to restart the container.

These changes make PicoClaw significantly easier to deploy on cloud platforms and improve the interactability of the Telegram bot.

🔗 Related Issues

cc @sipeed

This PR introduces comprehensive support for Coolify deployment and several
improvements to the Telegram channel:

Coolify Deployment:
- Added COOLIFY.md guide with 3 configuration methods.
- Added entrypoint-coolify.sh to generate config.json from environment variables.
- Added Dockerfile.coolify and docker-compose-coolify.yml optimized for Coolify.
- Support for full JSON configuration via PICOCLAW_CONFIG_JSON env var.

Telegram Enhancements:
- Persistent 'typing' indicator that repeats every 4s while AI is thinking.
- Automatic registration of bot commands (/model, /models) on startup.
- Consolidated /model command that supports 'provider/model' syntax for atomic switching.
- Dynamic /models command that shows actually configured providers and active model.

Configuration:
- Improved AgentLoop to support hot-switching models and providers without restart.

These changes improve cloud deployability and user experience in chat channels.
The root cause: Go's env.Parse() in LoadConfig reads PICOCLAW_*
environment variables AFTER loading config.json, silently overwriting
user-provided values. Dockerfile.coolify had hardcoded Gemini defaults
(PICOCLAW_AGENTS_DEFAULTS_PROVIDER=gemini) baked into the image layer,
so even when config.json correctly said 'vllm', the env vars won.

Fix:
- entrypoint-coolify.sh: When using PICOCLAW_CONFIG_JSON (Method 1), or
  mounted config (Method 2), unset all PICOCLAW_* env vars before
  calling picoclaw so the JSON file is the single source of truth.
- docker-compose-coolify.yml: Remove hardcoded gemini defaults from
  agent and doctor services.
- Updated docs header to recommend PICOCLAW_CONFIG_JSON as primary.
@mrbeandev mrbeandev force-pushed the feat/coolify-and-telegram-enhancements branch from 9ee5328 to 179527d Compare February 16, 2026 14:29
@Leeaandrob
Copy link
Collaborator

@Zepan Coolify deployment support plus Telegram UI/UX enhancements at +1032 lines. This bundles deployment infrastructure with channel improvements — two distinct concerns in one PR.

Recommendation: Consider splitting. The Telegram UX improvements are useful independently. Coolify deployment support is a niche deployment target that adds maintenance burden. Splitting would make review easier.

@mrbeandev
Copy link
Author

Addressed the latest review feedback to split concerns in this PR.

I removed the Coolify-specific deployment bundle from this branch (docs, compose, entrypoint, Coolify Dockerfile, and related release/workflow wiring) so PR #239 focuses on the channel/runtime improvements instead of mixing deployment infrastructure + Telegram UX.

Latest commit on this PR branch: e7a3341.

@mrbeandev
Copy link
Author

Update:

Coolify-only PR: #345

@mrbeandev mrbeandev closed this Feb 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No way to explicitly select which provider is being used

2 participants