origin-gamedb
Rust SDK for Origin GameDB — a standalone client for the Cognee-backed knowledge graph service used to ingest, structure, and search game design data.

Installation
[dependencies]
origin-gamedb = "0.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
Quick Start
use origin_gamedb::{CognifyOptions, GameDbClient, SearchOptions, SearchType};
#[tokio::main]
async fn main() -> origin_gamedb::Result<()> {
let gamedb = GameDbClient::new("ca_xxx_token");
gamedb.create_dataset("quest-design").await?;
gamedb
.add_text(
"quest-design",
"Side quests should reveal traversal mechanics before boss encounters.",
)
.await?;
gamedb
.cognify(&CognifyOptions {
datasets: Some(vec!["quest-design".into()]),
run_in_background: Some(true),
..Default::default()
})
.await?;
let results = gamedb
.search(
"How should traversal tutorials connect to quest pacing?",
Some(SearchOptions {
search_type: Some(SearchType::Summaries),
top_k: Some(5),
datasets: Some(vec!["quest-design".into()]),
}),
)
.await?;
println!("{results}");
Ok(())
}
Configuration
Default setup
GameDbClient::new("ca_xxx_token") uses the default API base URL:
https://cogneeapi.origingame.dev
Builder
Use the builder to point at a different deployment or inject a custom reqwest::Client:
let gamedb = origin_gamedb::GameDbClient::builder("ca_xxx_token")
.base_url("https://my-gamedb.example.com")
.http_client(reqwest::Client::new())
.build();
What You Can Do
Dataset management
let datasets = gamedb.datasets().await?;
gamedb.create_dataset("encounter-design").await?;
gamedb.delete_dataset("dataset-id").await?;
gamedb.delete_all_datasets().await?;
let status = gamedb.dataset_status().await?;
Add text or files
gamedb
.add_text("encounter-design", "Aggressive enemies should telegraph gap closers.")
.await?;
gamedb
.add_file("encounter-design", "./docs/encounters.md")
.await?;
Build the graph
gamedb
.cognify(&origin_gamedb::CognifyOptions {
datasets: Some(vec!["encounter-design".into()]),
run_in_background: Some(true),
..Default::default()
})
.await?;
Search knowledge
let results = gamedb
.search(
"What patterns create readable enemy pressure?",
Some(origin_gamedb::SearchOptions {
search_type: Some(origin_gamedb::SearchType::Insights),
top_k: Some(8),
datasets: Some(vec!["encounter-design".into()]),
}),
)
.await?;
API Surface
GameDbClient exposes:
health()
health_detailed()
datasets()
create_dataset()
delete_dataset()
delete_all_datasets()
dataset_status()
dataset_graph()
dataset_data()
delete_data()
add_text()
add_file()
cognify()
search()
search_history()
settings()
save_settings()
ontologies()
Error Handling
All methods return origin_gamedb::Result<T>, which uses OriginError:
use origin_gamedb::OriginError;
match gamedb.search("boss phase transitions", None).await {
Ok(results) => println!("{results}"),
Err(OriginError::Api { status, message, .. }) => {
eprintln!("API error ({status}): {message}");
}
Err(OriginError::Http(err)) => eprintln!("Network error: {err}"),
Err(err) => eprintln!("Other error: {err}"),
}
License
Licensed under either of Apache License, Version 2.0 or MIT License at your option.