enter-services
GitHub用于部署和管理 enter.pollinations.ai Cloudflare Worker(认证网关与计费)。涵盖环境配置、Staging/Production 发布流程、Secrets 管理及 Token 轮换,依赖 sops 和 wrangler。
Trigger Scenarios
Install
npx skills add pollinations/pollinations --skill enter-services -g -y
SKILL.md
Frontmatter
{
"name": "enter-services",
"description": "Deploy and manage the enter.pollinations.ai Cloudflare Worker (auth gateway + billing). Requires: sops, wrangler."
}
Requirements
Before using this skill, ensure you have:
- sops:
brew install sops(for decrypting secrets) - Wrangler:
npm install -g wrangler - Node.js:
brew install node
Must run from the pollinations repo root.
Architecture Overview
| Environment | Gateway (Cloudflare Worker) | Generation |
|---|---|---|
| Production | enter.pollinations.ai |
gen.pollinations.ai Worker |
| Staging | staging.enter.pollinations.ai |
staging.gen.pollinations.ai Worker |
The former enter-services / enter-services-staging EC2 boxes
(text-pollinations.service, image-pollinations.service) are decommissioned;
text and image generation run inside the gen.pollinations.ai Worker. The
Discord bots that lived on enter-services now run on the monitoring-agents
EC2 box — see apps/discord-bot-family/README.md and
operations/infrastructure/gpu/GPU_INSTANCES.md.
Deploy Cloudflare Worker (enter.pollinations.ai)
Production deploys only through GitHub Actions (Deploy / Cloudflare production, dispatched from the production branch) — never
wrangler deploy --env production from a local machine. See AGENTS.md
"Cloudflare Production Deployment Safety".
Staging deploys through the Deploy / Cloudflare staging workflow
(workflow_dispatch: pick the branch and the service). It runs
migrate:staging first, then deploy:staging. Tick push_secrets to also
push secrets/staging.vars.json to the Workers; a new or changed value needs
Secret Mutation Safety approval (AGENTS.md) before it is merged. The same
npm scripts also work locally per service:
cd enter.pollinations.ai
npm run deploy:staging # staging only
Check what a Worker has with wrangler secret list --env staging. Details:
token-rotation.md.
Testing on Staging
- Test token:
ENTER_API_TOKEN_STAGINGinenter.pollinations.ai/.testingtokens. If auth fails, runnpm run check-tokensinenter.pollinations.aibefore blaming the deploy; tokens expire without the file changing. - Agents are called by
owner/namemodel id on staging, same as production. - Cheap read-only checks:
wrangler d1 migrations list DB --remote --env staging,wrangler secret list --env staging, and the dispatch namespace list.
Wrangler Configuration
The wrangler.toml contains environment configs:
| Environment | Route | Service URLs |
|---|---|---|
production |
enter.pollinations.ai |
gen.pollinations.ai |
staging |
staging.enter.pollinations.ai |
staging.gen.pollinations.ai |
local |
localhost:3000 |
Local dev |
Token Rotation
Internal trust-boundary tokens (PLN_ENTER_TOKEN, PLN_GPU_TOKEN, Tinybird
tokens, SOPS recipients): see token-rotation.md for the
inventory, rotation mechanisms, deploy path, and rollback.
OAuth Client Notes
Dated notes from building third-party OAuth clients against enter. Check current source before relying on them.
- Open WebUI 0.11.x (2026-09): refreshes its token only within 5 minutes
of
expires_at, never in response to a 401 from a model call. A failed refresh deletes itsoauth_sessionrow but keeps the user logged in, so a failed refresh and a revoked API key look the same to the user (401 on the next model call). For self-healing: issue a shortexpires_inso the refresh fires, and return 200 from the refresh endpoint for every live account. apikeytable: inshared/db/better-auth.tsthe owner field isreferenceId, notuserId.row.userIdcompiles in loosely typed code and fails at runtime with a misleading "Unauthorized or invalid session" fromcreateApiKey. Runtscon new files touching this table before testing live.
Notes
- Production deploys on push to
productionbranch - Staging deploys via the
Deploy / Cloudflare stagingworkflow (manual dispatch), or per service withnpm run deploy:staging - Always test on staging before merging to production
enter.pollinations.aihandles auth/billing; generation requests are served by thegen.pollinations.aiWorker
Version History
-
55af554
Current 2026-09-22 18:00
新增 Staging 部署工作流(含迁移和可选 Secret 推送)、生产环境 SOPS 密钥推送逻辑、check-tokens 脚本及 observability 工具;移除旧版 EC2 架构说明。
-
3e1cabf
2026-09-09 11:59
从 EC2 迁移至 Cloudflare Worker 架构;移除 SSH 配置,改为基于 Wrangler 的部署;生产环境强制使用 GitHub Actions 发布。
-
8303332
2026-08-20 04:57
移除了遗留的image backend root代码,并将GPU后端相关文档重构至operations目录下。
- 99bce92 2026-07-25 10:38


