Ecosystem overview
Four projects that together cover remembering, running, observing and measuring an AI application.
dynavec started as a vector database, and it's growing into a full agent stack that runs inside your own cloud account. The plan has four parts. Each one answers a question about an AI application: what does it know, what does it do, what happened when it ran, and how good were the results?
The four projects
| Project | Tagline | What it covers | Status |
|---|---|---|---|
| dynavec | Remember | The vector database: S3 Vectors for search, DynamoDB for documents, plus caching, the knowledge graph, hybrid retrieval and framework integrations. | Available |
| dynaflow | Build & run | An orchestration engine for agents (nodes, edges, shared state, branches, loops, retries) with a visual builder where the code and the canvas describe the same graph. | In progress: chat models are available (#285), the engine is next. Epic #273 |
| dynalogs | Observe | Traces for each step of a run, structured logs with secrets removed, searchable run history and a metrics dashboard, all stored in your own account. | Early version: the telemetry dashboard. Epic #274 |
| dynaevals | Measure & improve | Retrieval metrics, LLM-judged answer quality, test datasets, regression runs and CI checks that fail when quality drops. | Partly available: retrieval metrics, faithfulness and answer relevance, trend tracking. Epic #275 |
How they fit together
Each project feeds the next one, and all of them keep their data in the same account:
- dynaflow runs the agent. Its retriever and memory steps read from and write to dynavec, and the state of each run is saved in DynamoDB so it can be resumed.
- Every step records what it did. dynalogs puts those records together into one view of the run that you can search and drill into.
- dynaevals scores the same runs, shows the scores next to the trace, and can fail a CI build when a score goes down.
- What the scores tell you goes back into the agent: its prompts, its steps and its retrieval settings.
dynaflow --- retrieve / remember --> dynavec
(build & run) (remember)
|
| traces, logs
v
dynalogs --- runs, traces -------> dynaevals
(observe) (measure & improve)
^ |
+------- improve the agent ----------+
What you can use today
Some of the newer pieces have already landed in the dynavec package.
Chat models (dynaflow)
One interface for OpenAI, Anthropic and Amazon Bedrock. With Bedrock, the model calls stay in your AWS account like the rest of dynavec.
from dynavec.chat import BedrockChatModel, Message
model = BedrockChatModel(region_name="us-east-1") # or OpenAIChatModel()
result = model.invoke([
Message(role="system", content="Answer in one sentence."),
Message(role="user", content="What is a vector database?"),
])
print(result.message.content)
Every model also has stream(), ainvoke() and astream(), and accepts
tools= for function calling.
Evaluation (dynaevals)
Check how well search finds the documents you expect:
from dynavec.eval import compute_mrr, compute_ndcg_at_k, compute_recall_at_k
retrieved = ["d3", "d1", "d7", "d2"] # ids returned by search, best first
relevant = {"d1", "d2"} # ids you know are correct
compute_recall_at_k(retrieved, relevant, k=3) # 0.5
compute_mrr(retrieved, relevant) # 0.5
compute_ndcg_at_k(retrieved, relevant, k=3) # 0.3869
And use an LLM as a judge to check whether an answer sticks to the retrieved context and actually answers the question:
from dynavec.eval import OpenAIJudge, evaluate_rag
result = evaluate_rag(
query="What powers the cell?",
context=["The mitochondria is the powerhouse of the cell."],
answer="The mitochondria.",
judge=OpenAIJudge(model="gpt-4o-mini"), # or BedrockJudge, GeminiJudge, CustomJudge
)
print(result.faithfulness.score, result.answer_relevance.score)
Telemetry (dynalogs)
Attach a TelemetryRecorder to your client to capture latency, cache hits and scores for every
search, then view them in the telemetry dashboard.
Roadmap
The proposed order of work, grouped by area. Each row links to its issues.
| Area | What's included | Issues |
|---|---|---|
| Engine core | The graph and state runtime, branches, loops and parallel steps, retries, saving run state to DynamoDB, and snapshots for resume and replay | #277–#281 |
| Nodes and models | A typed node schema, built-in and custom nodes, chat models (done), prompt templates and output parsers | #282–#286 |
| Agents | A tool registry with MCP connectors, a tool-calling loop and planner, multi-agent handoffs and conversation memory | #287–#290 |
| Visual builder | A drag-and-drop canvas, converting between code and canvas, watching runs live, stepping through a run, and a CLI | #291–#295 |
| Observability | Traces per step, structured logs, run history and run metrics | #299–#302 |
| Evaluation | More RAG metrics, test datasets, regression runs with CI checks, and scores shown next to traces | #303–#306 |
| Production and multi-cloud | Pausing for human approval, long-running workflows, one-command serverless deploy, and GCP and Azure backends | #296–#298, #307–#308 |
Want to help? Pick an unassigned issue, comment on it to get assigned, and follow CONTRIBUTING.md.