# TypeDBClient.jl Revived for TypeDB 3.4.4 – Native FFI, Streaming, & Rollback Safety

**URL:** <https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217>\
**Category:** Package Announcements\
**Tags:** package, data\
**Created:** [November 29, 2025, 3:37pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217 "2025-11-29T15:37:42Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![iamcomcy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iamcomcy/32/45521_2.png) [@iamcomcy](https://discourse.julialang.org/u/iamcomcy)\
**Post date:** [November 29, 2025, 3:37pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217/1 "2025-11-29T15:37:42Z")

</div>

# [ANN] TypeDBClient.jl – Revived for TypeDB 3.4.4 Community Edition

After a long hiatus, I’m excited to announce **TypeDBClient.jl** – a lightweight, type-safe Julia client for [TypeDB](https://vaticle.com/typedb) (formerly Grakn), the polymorphic graph database for knowledge representation and AI is being revived.

## What’s New in This Revival

- **Full TypeDB 3.x Support** : Bridges to `libtypedb_driver_clib.so` via Julia’s `@ccall` FFI. Handles Rust-based core changes (no sessions, explicit rollback).
- **Unified Queries** : Single `query(tx, typeql, return_type=...)` for match/get/fetch/insert/delete/reduce/aggregate.
- **Streaming Results** : `Channel{Dict{String,Any}}` for infinite rows – no hangs, REPL-safe (tested with 2000+ rows).
- **Write Safety** : `commit()` / `rollback()` / `close_transaction()` – discards partial inserts instantly (3.x requirement).
- **Performance** : 2–5× faster than HTTP.jl equivalents (benchmarks incoming).
- **Zero Deps** : No runtime packages; just load the C lib.

## Quick Start

```julia
using TypeDBClient

client = CoreClient("localhost", 1730; username="admin", password="password")
tx = transaction(client, "mydb", TypeDBClient.TransactionType.READ)

# Streaming fetch
ch = query(tx, "match $u isa user, has username $n; get;", return_type=Channel{Dict})
for row in ch
    println(row[:n]) # "alice", "bob", ...
end

close_transaction(tx)
close(client)
```

---

<div class="post-metadata">

**Author:** ![DnBgk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnbgk/32/208819_2.png) [@DnBgk](https://discourse.julialang.org/u/DnBgk)\
**Post date:** [November 29, 2025, 4:07pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217/2 "2025-11-29T16:07:05Z")

</div>

Thanks for making we aware that this DB exists at all!  
Looks useful

---

<div class="post-metadata">

**Author:** ![iamcomcy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iamcomcy/32/45521_2.png) [@iamcomcy](https://discourse.julialang.org/u/iamcomcy)\
**Post date:** [November 29, 2025, 4:16pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217/3 "2025-11-29T16:16:40Z")

</div>

TypeDB and Julia were MADE for each other! Both are strongly typed. I am working on a national survey platform that uses both. The TypeDB team just rewrote their core in Rust, so it’s REALLY fast now. I couldn’t let that go without a response, so I updated TypeDBClient.jl. I met the original author of the package at JuliaCon 2024.

---

<div class="post-metadata">

**Author:** ![joshua\_s](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joshua_s/32/219655_2.png) [@joshua\_s](https://discourse.julialang.org/u/joshua_s)\
**Post date:** [December 3, 2025, 5:25pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217/4 "2025-12-03T17:25:20Z")

</div>

Amazing to see this @iamcomcy ! Your link to the github repo doesn’t contain the most recent thing… is it in a fork now?

Thanks 😃 excited to check it out

---

<div class="post-metadata">

**Author:** ![iamcomcy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iamcomcy/32/45521_2.png) [@iamcomcy](https://discourse.julialang.org/u/iamcomcy)\
**Post date:** [December 3, 2025, 6:32pm UTC](https://discourse.julialang.org/t/typedbclient-jl-revived-for-typedb-3-4-4-native-ffi-streaming-rollback-safety/134217/5 "2025-12-03T18:32:51Z")

</div>

Hi Joshua!

I have a private fork that I am doing the update on, as I am doing this alone. No need to polute Github. 😉 As soon as I have my app recovered through this update process and the schema functions included, I will post my work on Github and everyone can check it out. 😄
