Skip to content

Migration reference (1.x)

Reference only

2.0 is a greenfield build. This page records what the current (1.x) agentfy does, for inspiration and to know what we're replacing — it is not a port plan.

Current 1.x stack

Layer1.x2.0
LLMAWS Bedrock (Claude), Groq fallback, openai (deprecated)system/llm — Claude API
ExecutionLambda handlers (streams.ts, tasks.ts) + Step Functionsephemeral k8s Jobs + worker app
Queue/eventsEventBridge cron + Step FunctionsBullMQ on Redis + Redis pub/sub
Relational DBPostgres (Prisma)Postgres (Prisma)
Chats/docs/tasksDynamoDB→ Postgres
Knowledge / RAGcustom LightRAG-pattern (OpenSearch + Neo4j Louvain + Cohere + unstructured-api)LightRAG library as a service
AuthAWS Cognitoown JWT (issuer = Core)
BillingPayPal + char-count quotageneric usage metering (+ Stripe?)
Object storageS3infra/storage (S3 / R2 / Hetzner OS)
IaCcdktf → AWSk8s manifests (Hetzner)

Where the 1.x code lives

agentfy/agentfy/api/src/slices (NestJS), app + admin (Nuxt), runner (Docker Claude-Code PoC), sdk (embed widget). ~28 API slices including a mature MCP server slice and the LightRAG-pattern knowledges/sources/vectors/neo4j slices.

Execution model contrast

1.x is request-centric and stateless: an agent is a config template; a request to POST /streams/bedrock loads config, does vector search, runs the Bedrock tool loop in-process, streams chunks, persists to DynamoDB. There is no running agent instance.

2.0 keeps "agent = config + state" but adds an ephemeral runtime: the brain (api) thinks and routes; tool work goes to an on-demand worker; everything is queued (BullMQ), streamed (events), and metered (usage). See the Runtime model.

What carries over conceptually

The mature MCP server, the LightRAG approach to knowledge, and the user/team model are sound ideas we rebuild cleanly — not files we copy.