falg23043 swaps per-user Anthropic keys for AWS Bedrock server-side credentials
falg23043 converted Mike from a bring-your-own-API-key tool to a firm-hosted deployment by replacing the direct Anthropic API with AWS Bedrock. Users no longer manage any Claude credentials; the firm's AWS account covers it.
A new backend/src/lib/llm/bedrock.ts adapter mirrors the existing claude.ts but uses AnthropicBedrock from @anthropic-ai/bedrock-sdk, authenticated via AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_REGION. If those env vars aren't present it falls back to the AWS credential chain. A BEDROCK_MODEL_ID_MAP in models.ts translates logical IDs to real Bedrock cross-region inference IDs (all pinned to the N. Virginia cross-region prefix) - Sonnet 4.6 and Haiku 4.5 each get a versioned inference profile ID. All three model defaults flip to Bedrock. The frontend model picker replaces the "Anthropic" group with "Bedrock", and isModelAvailable returns true unconditionally for Bedrock models since credentials are server-side.
Migration 001_bedrock_remove_claude_key.sql drops user_profiles.claude_api_key, updates the tabular_model default, and rewrites any existing Claude or Gemini model preferences to Bedrock equivalents. There's no rollback.
Two issues to address before running this in production. The stream adapter logs every raw event to stdout and appends unconditionally to bedrock-raw-stream.log in the working directory - a debugging artifact that will fill disk. Separately, the opus-4-6 entry in BEDROCK_MODEL_ID_MAP maps to anthropic.claude-opus-4-6-v1, which doesn't match Bedrock's versioned naming convention (the haiku entry includes a full date suffix and :0 revision token). That ID looks unverified and will likely 404.
The companion BEDROCK.md is a session-recovery memo listing what changed and what's still TODO for this specific deployment. Useful context, but specific to falg23043's environment and not something to commit into a general fork adoption.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?