An idiomatic Elixir client for TerminusDB, the document graph database with built-in version control.
The client provides an immutable TerminusDB.Config for connection context, a
Req-based TerminusDB.Client HTTP layer, a typed TerminusDB.Error, the
TerminusDB.Database management API, TerminusDB.Document CRUD with streaming,
TerminusDB.Schema frame retrieval, TerminusDB.Branch management,
TerminusDB.Commit history, TerminusDB.Diff, TerminusDB.Merge (rebase),
a TerminusDB.WOQL functional query DSL, and TerminusDB.Telemetry events on
every operation. Connection context is immutable data, making it safe for
concurrent use.
Ecto and ExDatalog integrations are planned for later milestones. See
ARCHITECTURE.md and the ADRs (under docs/adr/) for the full design and
roadmap.
Quick start
# 1. Configure a connection (immutable context)
config = TerminusDB.Config.new(endpoint: "http://localhost:6363")
# 2. Manage databases
{:ok, _} = TerminusDB.Database.create(config, "mydb",
label: "My Database",
comment: "A new database",
schema: true
)
# 3. Scope to a database (for later document work)
config = TerminusDB.Config.with_database(config, "mydb")All public calls return {:ok, result} or {:error, %TerminusDB.Error{}}. Each
!/1-suffixed variant raises TerminusDB.Error instead. Every operation emits
:telemetry events (see TerminusDB.Telemetry).
Summary
Functions
@spec version() :: String.t()
Returns the library version string.
Examples
iex> String.match?(TerminusDB.version(), ~r/^\d+\.\d+\.\d+/)
true