Quick setup examples
Ruby (HTTP) Quickstart
Call the Unison brain from Ruby using the standard net/http library and json gem — no extra dependencies.
Ruby's standard library covers everything needed. net/http handles the requests; json parses the responses.
Prerequisites
export UNISON_TOKEN=usk_live_...Ruby 3.0 or later.
Recall — fetch prompt-ready context
require "net/http"
require "uri"
require "json"
BASE = "https://brain.unisonlabs.ai"
TOKEN = ENV.fetch("UNISON_TOKEN")
def recall(query)
uri = URI("#{BASE}/v1/brain/context")
uri.query = URI.encode_www_form(q: query, k: 5, mode: "auto")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{TOKEN}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
data["weakEvidence"] ? "" : data["contextMd"]
end
memory = recall("payment service architecture")
puts memoryPersist — save a conversation to the brain
require "net/http"
require "uri"
require "json"
def persist
uri = URI("#{BASE}/v1/brain/remember")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer #{TOKEN}"
req["Content-Type"] = "application/json"
req.body = JSON.generate(
dump: {
turns: [
{ role: "user", content: "What queue library should we use?" },
{ role: "assistant", content: "Switched to pgmq — simpler ops than Redis." }
]
},
sourceRef: "session-1"
)
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
puts "jobId: #{data["jobId"]}"
end
persistremember runs the save-or-skip curation pipeline (dedupe, curated notes, entity facts) as a background job — poll GET /v1/brain/jobs/{jobId} for status. To write a document directly instead, POST a { type: "document", content, ... } item to /v1/brain/ingest — see Ingest.