Alongside the official SDKs listed in this section, the community maintains clients for a range of other languages. The projects below are not first-party SurrealDB SDKs unless noted. They are maintained by the community (or marked experimental) and may lag behind the database, omit features, or become unmaintained. Use at your own risk.
This list is illustrative, not exhaustive; other clients exist on package registries and GitHub.
C: surrealdb.c (experimental C driver; hosted in the SurrealDB organisation)
Dart / Flutter: surrealdb_flutter, surrealdb-client-dart
Elixir: surrealdb.elixir (first-party early release, see below), and the community packages surrealix, unreal, surreal_ex, surrealdb_ex (several overlapping options on Hex)
Erlang: surreal
Gleam: surreal_gleam
Elixir
surrealdb.elixir is the SurrealDB client for Elixir, maintained in the SurrealDB organisation. It is an early release (0.1) and is not yet published on Hex, so add it as a Git dependency in mix.exs:
def deps do
[
{:surrealdb, github: "surrealdb/surrealdb.elixir"}
]
endA connection is a supervised process, so in a Phoenix application it goes in the supervision tree under a name, and any process can then query through that name:
children = [
{SurrealDB.Connection,
url: "ws://localhost:8000/rpc",
namespace: "app",
database: "prod",
auth: %SurrealDB.Auth.Root{user: "root", pass: "secret"},
name: MyApp.SurrealDB}
]
{:ok, result} = SurrealDB.query(MyApp.SurrealDB, "SELECT * FROM person WHERE age > $min", %{min: 18})The same package also contains the Agent Memory client.
If you maintain a client and would like it considered for this list, open an issue or pull request against surrealdb/docs.surrealdb.com.