Updating ARC-1¶
Before you update¶
- Check the changelog — review CHANGELOG.md or the Releases page for breaking changes.
- Pin to a version — in production, use exact version tags (
:0.7.0), never:latest. Prevents surprise upgrades. - Test first — update a dev/staging instance before production. Verify MCP clients still connect and tools work as expected.
- Read the startup auth line after upgrade — a drift-free instance will log the same
auth: MCP=[...] SAP=[...]summary before and after. If it's different, the upgrade changed something you didn't expect.
npx / npm¶
npx always pulls the latest version. To pin:
Verify:
If you pin in MCP client config, update the args:
Docker (standalone)¶
# 1. Pull the new image
docker pull ghcr.io/marianfoo/arc-1:0.7.0
# 2. Stop & remove the running container
docker stop arc1 && docker rm arc1
# 3. Start with the new image (same env vars / config)
docker run -d --name arc1 -p 8080:8080 \
--env-file .env \
ghcr.io/marianfoo/arc-1:0.7.0
# 4. Verify
docker logs arc1 | head -20
curl -s http://localhost:8080/mcp
Downtime: brief interruption between stop and start. For zero-downtime, run two containers behind a reverse proxy (nginx / Traefik) and switch traffic after health check.
Rollback: start the previous image.
docker stop arc1 && docker rm arc1
docker run -d --name arc1 -p 8080:8080 --env-file .env ghcr.io/marianfoo/arc-1:0.6.8
BTP Cloud Foundry¶
CF supports rolling updates natively — no manual stop/start.
Step 1 — update image tag in manifest.yml¶
Step 2 — rolling push¶
Starts a new instance with the new image, waits for health checks, then stops the old one. MCP clients see no interruption.
Step 3 — verify¶
cf app arc1-mcp-server
cf logs arc1-mcp-server --recent | grep "auth:"
curl -s https://arc1-mcp-server.cfapps.us10.hana.ondemand.com/mcp
Rollback¶
# Option 1 — re-push previous tag
# Update manifest.yml back, then:
cf push arc1-mcp-server --strategy rolling
# Option 2 — previous droplet
cf rollback arc1-mcp-server
BTP specifics¶
- Destination Service / Cloud Connector: infrastructure config, not part of the image. No action on version bump.
- XSUAA bindings: persist across restages. No re-binding needed.
- New required env vars in the release? Set before pushing:
- Scaled > 1 instance (
cf scale -i 2): rolling update handles each instance sequentially.
git clone (development)¶
Monitoring after an update¶
Every release should behave identically for an unchanged config. Verify:
- Startup logs — errors, deprecation warnings, and the
auth:summary line - Tool listing — expected tools visible to the MCP client
- Basic operation — one
SAPReadorSAPSearchsucceeds - Auth flow — if using OIDC / XSUAA, verify a token-authenticated request
- Package scope — write to an allowed package, confirm write to a disallowed package is rejected
Release cadence¶
Automated via release-please:
feat:commits → minor bumpfix:commits → patch bumpfeat!:/BREAKING CHANGE:→ major bumpchore:/docs:/ci:→ no release
Published simultaneously to npm (arc-1) and GHCR (ghcr.io/marianfoo/arc-1).