Skip to content
review Visibility internal Owner erik@uvilo.com Approver _ Created 2026-06-24 Updated 2026-06-24

LibreChat Removal Plan 3

Scope: Update the in-scope Skills and the Update Infrastructure reference file, then run the final verification grep across published files. This Plan contains the work from the original Plan Tasks 4–5.

Plan boundary: Do not edit the out-of-scope Skills Forge/Skills/Vercel_MCP/, Forge/Skills/Linear_MCP/, or Forge/Skills/Suprsend_MCP/ in this Plan. Spec §4 explicitly excludes them.


Task 1 — Update All In-Scope Skills and Infrastructure State Reference

Spec §4: The following published Skills reference LibreChat-era infrastructure and are updated to reflect the current environment: MCP_Development, Verify_Infrastructure, Playwright_MCP, Typesense_MCP, Build_Typescript, Git_Dashboard, Preview, and Update_Infrastructure/references/infrastructure_state.md.

Spec §5: All credential references across in-scope Skills point to environment variables on the forgentic container, not to /workspace/librechat/.secrets or librechat.yaml. No Skill references librechat.yaml as a configuration source.

Spec §6: All references to the “LibreChat container” are replaced with the forgentic container on Railway. Shell commands (bash, curl, etc.) are invoked via forge-bash__run, not executed directly inside a LibreChat container.

Edit the 8 targets in the order below. Before editing each target, run a file-local grep for librechat, LibreChat, forge-spawn, librechat.yaml, and /workspace/librechat so you can confirm which lines are being replaced. After editing each target, run the same grep again; it must return no hits for that target before moving to the next target.

  1. Update Forge/Skills/MCP_Development/SKILL.md.

    1. Replace the frontmatter description so it says the Skill is for MCP servers in the uvilo-mono / forgentic environment.
    2. In ### 1. Launching MCP Servers, rename the bold note NPX in LibreChat to NPX in forgentic or equivalent current wording.
    3. In that same note, keep the rule to include -y in npx args, but replace former-container wording with non-interactive forgentic Railway container wording.
    4. In ### 2. Schema Compatibility, replace the fix sentence so schemas are rewritten before passing them to the current Bot/MCP tool layer.
    5. In ### 3. Integer 0 Rejection, replace the former validator name with current uvilo-mono/Bot MCP validation wording while keeping the Annotated[int, Field(ge=0)] fix.
    6. Replace ### 4. Container Environment with a current forgentic Railway container section: bash and curl are available through forge-bash__run; do not instruct agents to execute directly inside a former container.
    7. Update ## Gotchas so no bullet names the former runtime.
  2. Update Forge/Skills/Verify_Infrastructure/SKILL.md.

    1. In ## Prerequisites, replace the former secrets-file prerequisite with a prerequisite that required credentials are available through environment variables on the forgentic container or through the relevant MCP/tool configuration.
    2. In Procedure step 4, replace the instruction to consult the former secrets file with an instruction to use the Playwright skill’s current credential/environment-variable guidance.
    3. In ## Rules, replace the credential-source rule so credentials come from environment variables or tool-specific MCP configuration, not a former file path.
    4. If the opening outdated warning is no longer accurate after these changes, replace it with a short current-usage note rather than leaving the Skill marked unusable.
  3. Update Forge/Skills/Playwright_MCP/SKILL.md.

    1. In ## When to Use, remove the former chat domain from the examples and keep current examples such as uvilo.ai and os.uvilo.com.
    2. In ### 2. Transport, keep the SSE guidance, but replace the sentence that says the former runtime reconnects with a new session. Use current client/session wording instead.
    3. Replace ### 4. Authenticated Browsing entirely.
      1. State that credentials come from environment variables on the forgentic container or approved MCP/tool configuration.
      2. Remove the former secrets-file path and the former credential key.
      3. Keep the instruction to ask the user if required credentials are not available.
    4. Replace ### 5. Vercel Deployment Protection Bypass so the bypass token comes from an environment variable such as VERCEL_PROTECTION_BYPASS, not a former secrets file path.
    5. Update ## Gotchas if any bullet still references the former runtime or former credential location.
  4. Update Forge/Skills/Typesense_MCP/SKILL.md.

    1. In ## Gotchas, replace the bullet No curl in LibreChat container — use Python urllib for direct API calls.
    2. The replacement should say curl is available through forge-bash__run, while the existing Python urllib example remains a valid fallback for direct API calls.
    3. Keep the existing /proc/1/environ guidance for Railway environment variables if it remains accurate for the forgentic container.
  5. Update Forge/Skills/Build_Typescript/SKILL.md.

    1. In ## Rules, replace the rule that says to run the build before restarting the former runtime.
    2. The replacement should say to run the build before restarting or redeploying the current uvilo-mono / forgentic runtime when TypeScript MCP/server source was modified.
  6. Update Forge/Skills/Git_Dashboard/SKILL.md.

    1. In ## Step 3: Vercel Deployment, replace the step that reads the bypass token from the former secrets file.
    2. Replace the Python snippet with an environment-variable lookup, for example reading VERCEL_PROTECTION_BYPASS from the forgentic Railway environment.
    3. In the placeholder description for BYPASS_TOKEN, replace .secrets wording with environment-variable wording.
  7. Update Forge/Skills/Preview/SKILL.md.

    1. In ## Steps, replace step 4 so the bypass token comes from an environment variable on the forgentic container, such as VERCEL_PROTECTION_BYPASS.
    2. In ## Placeholders, replace the TOKEN row so it says the value comes from the Vercel bypass environment variable, not .secrets.
  8. Update Forge/Skills/Update_Infrastructure/references/infrastructure_state.md.

    1. In ## Railway, delete the former service ID row and replace it with a row for the current uvilo-mono / forgentic service if the current ID is known. If the ID cannot be verified, omit the service-ID row rather than preserving obsolete data.
    2. In ## Services, delete rows for former images and former services.
    3. Add or keep rows for current services only: uvilo-mono / forgentic runtime, Playwright MCP, Typesense, Vercel/docs-related infrastructure if tracked here, and any current data stores.
    4. Remove former image names, former volume descriptions, and former admin/RAG rows if they only belonged to the former stack.
    5. In ## Key Connection Variables, remove variables that only supported the former stack and add current uvilo-mono / forgentic, Typesense, Vercel, and MCP-related environment variables.
  9. Run one in-scope grep over all 8 targets:

    grep -RniE 'librechat|forge-spawn|librechat\.yaml|/workspace/librechat' \
      Forge/Skills/MCP_Development/SKILL.md \
      Forge/Skills/Verify_Infrastructure/SKILL.md \
      Forge/Skills/Playwright_MCP/SKILL.md \
      Forge/Skills/Typesense_MCP/SKILL.md \
      Forge/Skills/Build_Typescript/SKILL.md \
      Forge/Skills/Git_Dashboard/SKILL.md \
      Forge/Skills/Preview/SKILL.md \
      Forge/Skills/Update_Infrastructure/references/infrastructure_state.md
  10. If the grep returns any hit, return to the relevant substep above and replace it before continuing.

  11. Build to verify, then commit and push.


Task 2 — Final Published-File Verification

Spec §8: A grep -ri "librechat" --include="*.md" on all published files returns zero hits. No LibreChat references remain in active, published Persistent Knowledge.

Run the final verification after Plans 1, 2, and Task 1 of this Plan are complete.

  1. Build the site so generated pages and sidebar state are current.

  2. Create a list of active published markdown files, excluding archived content and dependency folders:

    grep -RIlE '^status:[[:space:]]*published' \
      --include='*.md' \
      --exclude-dir='.git' \
      --exclude-dir='node_modules' \
      --exclude-dir='.internal' \
      --exclude-dir='.trash' \
      . | grep -v '/Archived/' > /tmp/published-md-files.txt
  3. Grep the published-file list for the forbidden term:

    xargs grep -ni 'librechat' < /tmp/published-md-files.txt
  4. The command must return no output. If it returns hits in any in-scope active published file, fix the relevant Plan 1, Plan 2, or Task 1 target and repeat the grep.

  5. If the only remaining hits are in out-of-scope published Skills (Vercel_MCP, Linear_MCP, or Suprsend_MCP), do not edit those Skills in this Plan. Stop and report that Spec §4 excludes those Skills while Spec §8 requires zero published-file hits, so the conflict needs a human scope decision.

  6. When the grep returns no output, record the verification result in the implementation notes, then commit and push any final documentation changes.