Skip to main content

Single-file embedded database for AI agents. SQL + Vector Search + Full-Text Search + Hybrid Queries + Memory Graphs.

Project description

AgentDB

The embedded database built for AI agents.
One file. Five layers. Zero servers.
Relational SQL  ·  Vector Search  ·  Full-Text Search  ·  Hybrid Queries  ·  Memory Graphs — in Rust, Python, Node.js, C, WASM, and CLI.

CI   Coverage   License   Rust   v0.4.0   Datacules LLC


Installation

AgentDB is available in five distribution channels. Pick the one that matches your stack.

Rust — cargo add

cargo add datacules-agentdb
# Cargo.toml
[dependencies]
datacules-agentdb = "0.4"
use agentdb::AgentDB;
let db = AgentDB::open("agent.agentdb")?;

The library name is agentdb, so all use agentdb::* imports work as expected.

Python — pip install

pip install datacules-agentdb
import agentdb

db = agentdb.AgentDB.open(":memory:")
col = db.collection("thoughts", dim=1536)
col.upsert("m1", embedding, metadata={"score": 9})
results = col.search(query_vec, top_k=5)

Verify install: python -c "import agentdb; print(agentdb.__version__)"

Wheels available for CPython 3.9+, PyPy, manylinux, macOS (x64 + arm64), Windows. The import name is agentdb (not datacules_agentdb).

Node.js — npm install

npm install @datacules/agentdb
import { AgentDB } from '@datacules/agentdb';

const db = AgentDB.open(':memory:');
const col = db.collection('thoughts', 1536);
col.upsert('m1', embedding, { score: 9 });
const results = col.search(queryVec, { topK: 5 });

Verify install: node -e "const {AgentDB}=require('@datacules/agentdb'); console.log('ok')"

Pre-built native addons for Linux x64/arm64, macOS x64/arm64, Windows x64. Full TypeScript type definitions included.

C / C++ — shared library + header

# Build the shared library
cargo build --release --features ffi --lib
# Linux:   target/release/libagentdb.so
# macOS:   target/release/libagentdb.dylib
# Windows: target/release/agentdb.dll

# Generate the C header (requires cbindgen)
cargo install cbindgen
cbindgen --config cbindgen.toml --output agentdb.h
#include "agentdb.h"

AgentDbHandle *db = agentdb_open(":memory:");
agentdb_execute(db, "CREATE TABLE t (id TEXT PRIMARY KEY)");
agentdb_close(db);

The flat C API covers open/close, SQL execute/query, vector upsert/search, graph add_node/add_edge/neighbors, FTS index/search, hybrid query, and stats.

Go — cgo

import "github.com/hvrcharon1/agentdb/go"

db, _ := agentdb.Open("agent.agentdb")
defer db.Close()
db.Execute("CREATE TABLE sessions (id TEXT PRIMARY KEY)")
json, _ := db.QueryJSON("SELECT * FROM sessions")

See go/README.md for build instructions.

Java — JNI

import com.datacules.agentdb.AgentDB;

try (AgentDB db = AgentDB.open("agent.agentdb")) {
    db.execute("CREATE TABLE sessions (id TEXT PRIMARY KEY)");
    String json = db.queryJson("SELECT * FROM sessions");
}

See java/README.md for Maven setup.

C# / .NET — P/Invoke

using Datacules.AgentDB;

using var db = AgentDB.Open("agent.agentdb");
db.Execute("CREATE TABLE sessions (id TEXT PRIMARY KEY)");
string json = db.QueryJson("SELECT * FROM sessions");

See dotnet/README.md for NuGet setup.

CLI — one command on any OS

Method Command
Cargo cargo install datacules-agentdb
Homebrew (macOS/Linux) brew install hvrcharon1/tap/agentdb
Scoop (Windows) scoop bucket add agentdb https://github.com/hvrcharon1/scoop-bucket && scoop install agentdb
Chocolatey (Windows) choco install agentdb
Snap (Linux) snap install agentdb
WinGet (Windows) winget install Datacules.AgentDB
Nix nix run github:hvrcharon1/agentdb
Shell script curl -fsSL https://raw.githubusercontent.com/hvrcharon1/agentdb/main/install.sh | sh
PowerShell irm https://raw.githubusercontent.com/hvrcharon1/agentdb/main/install.ps1 | iex
agentdb stats      agent.agentdb          # print database statistics
agentdb inspect    agent.agentdb          # full summary: stats + collections + nodes
agentdb sql        agent.agentdb "SELECT * FROM sessions LIMIT 5"
agentdb search     agent.agentdb thoughts 0.9 0.1 0.0 0.0 --top-k 5
agentdb reindex    agent.agentdb          # rebuild all dirty HNSW indexes
agentdb collections agent.agentdb         # list all vector collections
agentdb shell      agent.agentdb          # interactive SQL REPL
agentdb -i         agent.agentdb          # same as shell (shorthand)

Docker

docker build -t agentdb .
docker run -v $(pwd):/data agentdb stats mydb.agentdb
docker run -it -v $(pwd):/data agentdb shell mydb.agentdb

WASM — browser + Cloudflare Workers

cargo install wasm-pack
wasm-pack build --target web --features wasm -- --no-default-features
import init, { WasmAgentDB } from './pkg/agentdb.js';
await init();
const db = WasmAgentDB.open_memory();
db.execute("CREATE TABLE notes (id TEXT)");
console.log(JSON.parse(db.stats()));
// { collections: 0, vectors: 0, nodes: 0, edges: 0 }

In-memory databases work today. Persistent storage via OPFS is tracked for v0.4.0.


Table of Contents


Overview

AgentDB is a single-file, embedded database engine written in Rust, purpose-built for AI agents and LLM-powered applications. It unifies five storage and query primitives into one self-contained .agentdb file:

  • Structured relational SQL
  • Semantic vector search (HNSW, pure Rust)
  • Episodic memory graphs (typed nodes, weighted edges, recursive traversal)
  • Full-text search (FTS5, BM25 ranking, Porter stemming)
  • Hybrid queries (graph + vector blended ranking)

There is no server to run. No daemon to manage. No network to configure.

let db = AgentDB::open("agent.agentdb")?;

That single line gives your agent a full relational database, a vector index, a traversable memory graph, a full-text search engine, and hybrid query capability — all persisted to one file on disk.

The same database is now accessible from Rust, Python, Node.js, C (and any language with C FFI), the command line, and the browser (WASM).


Why AgentDB?

Modern AI agents have needs that today require multiple separate tools:

What the agent needs Today's solution The problem
Store structured events, sessions, logs Relational database No vector search, no graph
Semantic similarity search over memories ChromaDB, Qdrant, Pinecone Separate service, no SQL, network required
Traverse knowledge and memory relationships Neo4j, custom graph DB Heavy, not embeddable, not offline
Keyword search over stored text Elasticsearch, Typesense Yet another service, heavy infra
Combined graph + semantic retrieval Custom code Fragile, no standard, high latency

AgentDB collapses all five into one embedded file. No services. No ports. No sync headaches.


Architecture

All five layers share the same underlying SQLite storage engine and co-exist within one .agentdb file.

┌──────────────────────────────────────────────────────────┐
│                    agent.agentdb                         │
│  Layer 1: Relational SQL   │  Layer 2: Vector Store       │
│  Layer 3: Memory Graph     │  Layer 4: Full-Text Search   │
│         Layer 5: Hybrid Queries                          │
│  WAL mode · ACID · Foreign keys · Concurrent reads       │
└──────────────────────────────────────────────────────────┘
          │             │             │           │
       Rust API      Python        Node.js      C FFI
       cargo add    pip install   npm install  libagentdb.so
          │             │             │           │
        CLI           WASM        (Go, Ruby,    Browser
      agentdb       wasm-pack     Swift, etc)  Workers

The Five Layers

Layer 1 — Relational SQL

Full SQL engine. Create any tables alongside AgentDB's internal tables.

db.execute("CREATE TABLE sessions (id TEXT PRIMARY KEY, user TEXT)")?;
db.execute_params("INSERT INTO sessions VALUES (?1, ?2)", &[&"s1", &"harshal"])?;
let rows = db.query_json("SELECT * FROM sessions")?;

Layer 2 — Vector Store

HNSW-based approximate nearest-neighbor search. Pure Rust. MongoDB-style metadata filtering.

let col = db.vectors().collection("memories", 1536)?;
col.upsert(VectorEntry { id: "m1".into(), vector: embedding, metadata: Some(json!({ "score": 9 })) })?;
let results = col.search(&query, SearchOptions { top_k: 5, metric: DistanceMetric::Cosine, filter: Some(json!({ "score": { "$gte": 8 } })) })?;

Layer 3 — Memory Graph

Typed nodes, weighted directed edges, recursive CTE traversal.

let graph = db.memory();
graph.add_node("session_42", "session", None)?;
graph.add_node("concept_rust", "concept", Some(json!({ "label": "Rust" })))?;
graph.add_edge("session_42", "concept_rust", "discussed", 0.95)?;
let neighbors = graph.neighbors("session_42", TraversalOptions { max_depth: 2, ..Default::default() })?;

Layer 4 — Full-Text Search

FTS5, BM25 ranking, Porter stemmer, snippet extraction.

let fts = db.fts();
fts.index_text("memories", "m1", &col.id, "Rust systems programming safety")?;
let results = fts.search("memories", "systems safety", 5)?;

Layer 5 — Hybrid Queries

Graph traversal + vector ANN blended by alpha.

let results = db.hybrid_query(HybridQuery {
    anchor_node: "session_42",
    embedding:   &query_vec,
    collection:  "memories",
    graph_depth: 2,
    top_k:       10,
    alpha:       0.6,   // 0.0=pure graph, 1.0=pure vector
    filter:      None,
})?;

Layer 6 — Conversations

First-class message threading for agent interactions.

let conv = db.conversations();
conv.create_conversation("chat_1", Some("Debug session"), None)?;
conv.add_message("chat_1", "user", "Why is the test failing?", None)?;
conv.add_message("chat_1", "assistant", "The assertion on line 42...", None)?;
let messages = conv.get_messages("chat_1", Some(50))?;

Layer 7 — Workflow Persistence

Durable workflow state for multi-step agent tasks.

let wf = db.workflows();
wf.create_workflow("wf_1", "code_review", Some(json!({"pr": 42})))?;
let step_id = wf.add_step("wf_1", "fetch_diff", None)?;
wf.update_step(&step_id, "completed", Some(json!({"lines": 120})), None)?;
wf.complete_workflow("wf_1", Some(json!({"approved": true})))?;

Layer 8 — Reasoning Traces

Tree-structured traces for chain-of-thought, tool calls, and decision logs.

let traces = db.traces();
let root = traces.add_trace(Some("session_1"), None, "thought", "Analyzing the error...", None)?;
let child = traces.add_trace(Some("session_1"), Some(&root), "tool_call", "grep for assertion", None)?;
let tree = traces.get_trace_tree(&root)?;

Quick Start

git clone https://github.com/hvrcharon1/agentdb
cd agentdb
cargo run --example agent_memory
cargo run --example rag_pipeline
cargo run --example graph_traverse
cargo run --example v020_query_power

See also: python/examples/agent_memory.py and nodejs/examples/agent_memory.ts.


API Reference

AgentDB

Method Description
AgentDB::open(path) Open or create a database file
db.execute(sql) Execute a SQL statement
db.execute_params(sql, params) Execute a parameterized SQL statement
db.execute_batch(sql) Run multiple statements in one atomic transaction
db.transaction(closure) Execute a closure inside an ACID transaction
db.query_json(sql) Query → Vec<serde_json::Value>
db.vectors() Access vector store
db.memory() Access memory graph
db.fts() Access full-text search
db.conversations() Access conversation/message threading
db.workflows() Access workflow persistence
db.traces() Access reasoning traces
db.hybrid_query(q) Run a hybrid graph + vector query
db.stats() Return DbStats
db.close() Flush dirty indexes and close

Collection

Method Description
col.upsert(entry) Insert or update a single vector
col.upsert_batch(entries) Bulk insert in a single transaction
col.search(query, opts) ANN search → Vec<SearchResult>
col.delete(id) Delete a vector by ID
col.reindex() Force rebuild the HNSW index
col.count() Number of vectors in collection

MemoryGraph

Method Description
graph.add_node(id, kind, data) Insert or update a node
graph.get_node(id) Fetch a node by ID
graph.delete_node(id) Delete node and cascade its edges
graph.add_edge(src, dst, relation, weight) Insert or update a directed edge
graph.delete_edge(src, dst, relation) Delete a specific edge
graph.neighbors(id, opts) Recursive graph traversal
graph.nodes_by_kind(kind) List all nodes of a given type

FullTextStore

Method Description
fts.index_text(col, id, col_id, text) Index text for a vector entry
fts.search(col, query, top_k) BM25 full-text search
fts.delete_text(col, id) Remove a document from the index
fts.optimize(col) Merge FTS index segments

ConversationStore

Method Description
conv.create_conversation(id, title, metadata) Create a conversation thread
conv.add_message(conv_id, role, content, metadata) Append a message → returns message ID
conv.get_messages(conv_id, limit) Get messages in chronological order
conv.list_conversations() List all conversations
conv.delete_conversation(id) Delete conversation and all messages

WorkflowStore

Method Description
wf.create_workflow(id, name, input) Create a workflow run
wf.add_step(workflow_id, name, input) Add a step → returns step ID
wf.update_step(step_id, status, output, error) Update step status/output
wf.complete_workflow(id, output) Mark workflow as completed
wf.get_workflow(id) Get workflow with all its steps
wf.list_workflows(status_filter) List workflows, optionally filtered

TraceStore

Method Description
traces.add_trace(session, parent, type, content, meta) Add a trace node → returns ID
traces.get_traces(session_id) All traces for a session
traces.get_trace_tree(root_id) Recursive tree from a root trace

Internal Schema

-- Core tables
CREATE TABLE _adb_meta          (key TEXT PRIMARY KEY, value TEXT NOT NULL);
CREATE TABLE _adb_collections   (id TEXT PRIMARY KEY, name TEXT UNIQUE, dim INTEGER,
                                  metric TEXT, count INTEGER, created_at INTEGER);
CREATE TABLE _adb_vectors       (id TEXT, collection_id TEXT, vector BLOB,
                                  metadata TEXT, created_at INTEGER,
                                  PRIMARY KEY (id, collection_id));
CREATE TABLE _adb_hnsw_index    (collection_id TEXT PRIMARY KEY, index_blob BLOB,
                                  built_at INTEGER, is_dirty INTEGER);
CREATE TABLE _adb_nodes         (id TEXT PRIMARY KEY, kind TEXT, data TEXT,
                                  created_at INTEGER, updated_at INTEGER);
CREATE TABLE _adb_edges         (src TEXT, dst TEXT, relation TEXT, weight REAL,
                                  created_at INTEGER, PRIMARY KEY (src, dst, relation));
CREATE VIRTUAL TABLE _adb_fts_{name} USING fts5(...);

-- Conversations
CREATE TABLE _adb_conversations (id TEXT PRIMARY KEY, title TEXT, metadata TEXT,
                                  created_at INTEGER, updated_at INTEGER);
CREATE TABLE _adb_messages      (id TEXT PRIMARY KEY, conversation_id TEXT NOT NULL,
                                  role TEXT NOT NULL, content TEXT NOT NULL,
                                  metadata TEXT, created_at INTEGER);

-- Workflow persistence
CREATE TABLE _adb_workflows     (id TEXT PRIMARY KEY, name TEXT NOT NULL,
                                  status TEXT DEFAULT 'pending', input TEXT,
                                  output TEXT, metadata TEXT,
                                  created_at INTEGER, updated_at INTEGER);
CREATE TABLE _adb_workflow_steps (id TEXT PRIMARY KEY, workflow_id TEXT NOT NULL,
                                  step_index INTEGER, name TEXT NOT NULL,
                                  status TEXT DEFAULT 'pending', input TEXT,
                                  output TEXT, error TEXT,
                                  started_at INTEGER, completed_at INTEGER);

-- Reasoning traces
CREATE TABLE _adb_traces        (id TEXT PRIMARY KEY, session_id TEXT,
                                  parent_id TEXT, trace_type TEXT NOT NULL,
                                  content TEXT NOT NULL, metadata TEXT,
                                  created_at INTEGER);

Comparison

Feature AgentDB SQLite ChromaDB Qdrant Neo4j
Embedded (no server)
Single file
Zero-configuration setup
ACID transactions / WAL
Relational SQL
Vector / ANN search
Advanced metadata filter ⚠️
Full-text search (BM25)
Memory graph layer
Hybrid graph + vector query
Conversation threading
Workflow persistence
Reasoning traces
Interactive CLI shell
Docker image
Python
Node.js
Go
Java
C# / .NET
C FFI
WASM / browser
Works on edge / mobile
Unlicense (public domain equivalent)

Project Structure

agentdb/
├── Cargo.toml
├── Cargo.lock
├── README.md
├── CHANGELOG.md
├── ROADMAP.md
├── ARCHITECTURE.md
├── BENCHMARKS.md
├── CONTRIBUTING.md
├── SECURITY.md
├── MIGRATION.md
├── LICENSE
├── NOTICE
├── cbindgen.toml          ← C header generation config
├── rustfmt.toml
├── .github/
│   ├── workflows/
│   │   ├── ci.yml             ← lint, test, audit, coverage
│   │   ├── bench.yml          ← Criterion benchmarks
│   │   ├── release.yml        ← build binaries + GitHub Release on tag
│   │   ├── publish.yml        ← crates.io publish on tag
│   │   ├── python-publish.yml ← PyPI wheels on tag
│   │   ├── nodejs-publish.yml ← npm publish on tag
│   │   ├── ffi-header.yml     ← auto-generate agentdb.h on ffi.rs change
│   │   └── wasm.yml           ← wasm-pack build + smoke test on push
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── codecov.yml
│   └── dependabot.yml
├── Dockerfile             ← multi-stage Docker build
├── src/
│   ├── lib.rs
│   ├── db.rs
│   ├── schema.rs
│   ├── error.rs
│   ├── filter.rs
│   ├── fts.rs
│   ├── hybrid.rs
│   ├── conversations.rs   ← conversation/message threading
│   ├── workflows.rs       ← workflow persistence
│   ├── traces.rs          ← reasoning traces
│   ├── ffi.rs             ← C FFI flat API (feature = "ffi")
│   ├── wasm.rs            ← WASM bindings (feature = "wasm")
│   ├── bin/
│   │   └── agentdb.rs     ← CLI binary + interactive shell
│   ├── vectors/
│   │   ├── mod.rs
│   │   ├── collection.rs
│   │   └── hnsw.rs
│   └── memory/
│       ├── mod.rs
│       └── graph.rs
├── python/                ← PyO3 + maturin (pip install)
├── nodejs/                ← napi-rs (npm install)
├── go/                    ← cgo wrapper (Go module)
├── java/                  ← JNI wrapper (Maven)
├── dotnet/                ← P/Invoke wrapper (NuGet)
├── examples/
│   ├── agent_memory.rs
│   ├── rag_pipeline.rs
│   ├── graph_traverse.rs
│   └── v020_query_power.rs
├── tests/
│   ├── test_relational.rs
│   ├── test_vectors.rs
│   ├── test_memory_graph.rs
│   ├── test_v020.rs
│   ├── test_ffi.rs        ← FFI layer (--features ffi)
│   └── test_cli.rs        ← CLI binary integration tests
└── benches/
    ├── vector_search.rs
    └── graph_traverse.rs

Roadmap

Milestone Status
v0.1.0 Core ✅ Done
v0.2.0 Query Power ✅ Done
v0.3.0 Universal Availability ✅ Done
v0.3.1–0.3.4 Stabilization + Packaging ✅ Done
v0.4.0 AI-Native + Multi-Language SDKs ✅ Done
v0.5.0 LangChain + LlamaIndex + MCP + Sync 🔜 Next
v1.0.0 Production + all registries published Planned

Full detail in ROADMAP.md and CHANGELOG.md.


Contributing

See CONTRIBUTING.md for development setup, PR process, and code standards.

Quick summary:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Write tests for your changes
  4. Run cargo test and cargo clippy — both must pass
  5. Open a pull request with a clear description

To report a security vulnerability, see SECURITY.md.


License

AgentDB is released under the Unlicense by Datacules LLC (effectively public domain — you are free to use, modify, distribute, and sublicense without restriction). See LICENSE and NOTICE for full terms.


Built and maintained by Datacules LLC

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

datacules_agentdb-0.4.5-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

datacules_agentdb-0.4.5-cp311-cp311-manylinux_2_34_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

datacules_agentdb-0.4.5-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

datacules_agentdb-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file datacules_agentdb-0.4.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for datacules_agentdb-0.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 221ddd10b5f8d0873a87a04d3fcbbc9ff53bdfa75cca160c2f20ad82ddd15e88
MD5 58d907647ae9be4db36c42f45f38e130
BLAKE2b-256 237ff4f8792d30911fa177d49ea1ec9e56491f0a4ff3c4bd35dcaa61a718bd12

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacules_agentdb-0.4.5-cp311-cp311-win_amd64.whl:

Publisher: python-publish.yml on hvrcharon1/agentdb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file datacules_agentdb-0.4.5-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for datacules_agentdb-0.4.5-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 893726bee16dba8417970f7d2ed65846cb24c758462b8310eb5909dbc750b6d9
MD5 99992ac11d366fc7e4aa17c331ed5681
BLAKE2b-256 3fbb5ffd5fd694b6b91d91281b6f72cddd7f052a1252766a9a7d7a36fc61342d

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacules_agentdb-0.4.5-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: python-publish.yml on hvrcharon1/agentdb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file datacules_agentdb-0.4.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for datacules_agentdb-0.4.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55f52cc6a251a248732f04be570a28d5c87ec06097a2ca7a82e82b5a3beefa0e
MD5 dbb8ad06c160bd3a780506bf93915a2a
BLAKE2b-256 74644d82ff697f5620eaa98da5ca8c6e185ed5464590ba8840d4f006ff009db2

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacules_agentdb-0.4.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on hvrcharon1/agentdb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file datacules_agentdb-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for datacules_agentdb-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd415db670bb9ee9034963e6463f45fe9c135aad16ebf35d0db9bb1f1bf3900a
MD5 6d391cef961c12170e672265d80cbaaa
BLAKE2b-256 fb0fcbad36e8e52798ce6f5bbf9bac9ece97e4831ae9f7c5b7e96046a68fb058

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacules_agentdb-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on hvrcharon1/agentdb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page