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 memory

Persist — 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

persist

remember 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.

On this page