mcpField
E
enter-services

enter-services

github.com/pollinationsCloud & DevOps5.3k68 installsUpdated today
Repository

About enter-services

A repository skill for working with the Pollinations enter and generation services. It documents their environments, staging tests, deployment procedures, and token-management safeguards for engineers.

Key features

  1. 01Document production and staging architecture
  2. 02Guide staging deployment and testing
  3. 03Explain Worker secrets and token rotation
  4. 04Describe production deployment safeguards

Use cases

  1. 01Testing service changes in staging
  2. 02Deploying the staging Worker
  3. 03Reviewing environment configuration and secrets

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pollinations/pollinations --skill enter-services

After installing, type/enter-servicesin Claude Code to confirm it loaded.

Bundled files.gitignoretoken-rotation.md

Details

From the project README

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

EnvironmentGateway (Cloudflare Worker)Generation
Productionenter.pollinations.aigen.pollinations.ai Worker
Stagingstaging.enter.pollinations.aistaging.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_STAGING in enter.pollinations.ai/.testingtokens. If auth fails, run npm run check-tokens in enter.pollinations.ai before blaming the deploy; tokens expire without the file changing.
  • Agents are called by owner/name model 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:

EnvironmentRouteService URLs
productionenter.pollinations.aigen.pollinations.ai
stagingstaging.enter.pollinations.aistaging.gen.pollinations.ai
locallocalhost:3000Local 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 its oauth_session row 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 short expires_in so the refresh fires, and return 200 from the refresh endpoint for every live account.
  • apikey table: in shared/db/better-auth.ts the owner field is referenceId, not userId. row.userId compiles in loosely typed code and fails at runtime with a misleading "Unauthorized or invalid session" from createApiKey. Run tsc on new files touching this table before testing live.

Notes

  • Production deploys on push to production branch
  • Staging deploys via the Deploy / Cloudflare staging workflow (manual dispatch), or per service with npm run deploy:staging
  • Always test on staging before merging to production
  • enter.pollinations.ai handles auth/billing; generation requests are served by the gen.pollinations.ai Worker

Comments

Markdown supported