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
| Layer | 1.x | 2.0 |
|---|---|---|
| LLM | AWS Bedrock (Claude), Groq fallback, openai (deprecated) | system/llm — Claude API |
| Execution | Lambda handlers (streams.ts, tasks.ts) + Step Functions | ephemeral k8s Jobs + worker app |
| Queue/events | EventBridge cron + Step Functions | BullMQ on Redis + Redis pub/sub |
| Relational DB | Postgres (Prisma) | Postgres (Prisma) |
| Chats/docs/tasks | DynamoDB | → Postgres |
| Knowledge / RAG | custom LightRAG-pattern (OpenSearch + Neo4j Louvain + Cohere + unstructured-api) | LightRAG library as a service |
| Auth | AWS Cognito | own JWT (issuer = Core) |
| Billing | PayPal + char-count quota | generic usage metering (+ Stripe?) |
| Object storage | S3 | infra/storage (S3 / R2 / Hetzner OS) |
| IaC | cdktf → AWS | k8s 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.