Project Info
Inspiration
came across Vercel’s Fluid Compute and got curious about how it works under the hood. Lambda Fluid started as an attempt to rebuild the core idea on AWS Lambda.
What it does
Normally, a Lambda sits around doing very little while its request waits on a database or API. Lambda Fluid lets that same running Lambda work on other requests during the wait. How I built it It’s written in TypeScript with EffectTS. There’s an orchestrator that receives requests, tracks worker health, and routes work to Lambda workers through a persistent tunnel. I also built local and AWS demos so the behavior can be compared. Challenges I ran into TCP framing, concurrent routing, retries, cancellation, and Lambda’s 15-minute lifetime all caused some headaches. The AWS deployment tooling also had a couple of beta-related surprises. Accomplishments that I'm proud of The full pipeline works locally, and the same worker runtime also runs on a real AWS Lambda. The demos show concurrent requests, streaming responses, health-based routing, and fewer Lambda environments. What I learned The main challenge isn’t starting more Lambdas. It’s figuring out how much work an existing Lambda can safely take without overwhelming it.
What's next
improve the AWS benchmarks, support normal HTTP handlers, make scaling smarter, and package the whole thing so it’s easier to drop into an existing project.
Lambda Fluid
Lambda Fluid is an Effect-based reconstruction of the core idea behind fluid serverless compute: keep a Lambda invocation alive as a worker, send multiple logical HTTP requests through one outbound tunnel, and let the Node.js event loop execute another request while earlier requests await I/O.
This is an OSS prototype and developer tool, not a hosted multi-tenant service. One orchestrator manages one application and one compatible worker pool.
Quick evaluation
Install and verify:
pnpm install
pnpm check
pnpm test
Mode 1: completely local
No cloud credentials are needed. These finite commands exercise the client, HTTP orchestrator, adaptive fleet, TCP tunnels, workers, and streamed responses.
pnpm bench examples/01-order.ts
pnpm bench examples/02-three-endpoints.ts
Mode 2: local orchestrator to AWS Lambda
This bundles the chosen example handler into an Alchemy-managed Lambda, starts a temporary public worker ingress, and routes the same 30-request workload through real Lambda workers.
pnpm infra:login --profile builder
pnpm demo:local-aws examples/01-order.ts --profile builder
pnpm demo:local-aws examples/02-three-endpoints.ts --profile builder
Mode 2 requires cloudflared, creates or updates AWS resources, and can incur
charges. Read the setup and cleanup guide before running it.
Judge and agent guide
Start with the documentation navigator. It includes:
- a five-minute evaluation path;
- architecture and request-flow diagrams;
- both supported execution modes;
- a package-by-package source tour;
- protocol, concurrency, routing, and lifecycle explanations;
- benchmark interpretation;
- an explicit implemented-versus-incomplete matrix.
The shortest source-reading path is:
examples/01-order.ts— ordinary application code.packages/orchestrator/src/control-plane.ts— routing and response correlation.packages/worker/src/runtime.ts— concurrent logical jobs.packages/tunnel/src/channel.ts— bidirectional framed transport.packages/aws-runtime/src/lambda-handler.ts— Lambda adapter.
Scope
The supported evaluation surface is deliberately limited to:
- fully local end-to-end execution;
- a local orchestrator controlling AWS Lambda workers.
research/ preserves the reasoning and source research that led here; docs/
describes what the checked-in implementation does now.
Analysis
View
Metric
- 11
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- TypeScriptIn code
1 of 1 appear in the indexed code.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1009 KB
Source files
83
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Rust-soham/lambda-fluid
106 files · 1023 KB · @ ae3285c
Structure
Application logic
33 files · 31%Domain rules, services and shared utilities.
+3 moreBackground jobs
7 files · 7%Work run outside a request: tasks, workers and schedules.
Data & schema
6 files · 6%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Markdown69%
- TypeScript16%
- YAML15%
- Shell0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 12- @effect/platform-node
- @lambda-fluid/aws-runtime
- @lambda-fluid/benchmark
- @lambda-fluid/orchestrator
- @lambda-fluid/protocol
- @lambda-fluid/worker
- effect
- +5 more
packages/orchestrator/package.json
npm · 9- @lambda-fluid/protocol
- @lambda-fluid/tunnel
- effect
- +6 more
packages/aws-runtime/package.json
npm · 8- @distilled.cloud/aws
- @effect/platform-node
- @lambda-fluid/protocol
- @lambda-fluid/worker
- effect
- +3 more
packages/benchmark-cli/package.json
npm · 8- @effect/platform-node
- @lambda-fluid/benchmark
- @lambda-fluid/orchestrator
- @lambda-fluid/protocol
- @lambda-fluid/worker
- effect
- vite
- +1 more
packages/infra/package.json
npm · 6- @effect/platform-node
- @lambda-fluid/aws-runtime
- @lambda-fluid/benchmark
- alchemy
- effect
- +1 more
packages/tunnel/package.json
npm · 6- @effect/platform-node
- @lambda-fluid/protocol
- effect
- +3 more
packages/worker/package.json
npm · 6- @lambda-fluid/protocol
- @lambda-fluid/tunnel
- effect
- +3 more
packages/benchmark/package.json
npm · 3- @lambda-fluid/protocol
- @lambda-fluid/worker
- +1 more
packages/protocol/package.json
npm · 3- effect
- +2 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.