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 — write memory to the brain

require "net/http"
require "uri"
require "json"

def persist
  uri = URI("#{BASE}/v1/brain/ingest")

  req = Net::HTTP::Post.new(uri)
  req["Authorization"] = "Bearer #{TOKEN}"
  req["Content-Type"]  = "application/json"
  req.body = JSON.generate(
    items: [
      {
        type: "conversation",
        turns: [
          { role: "user",      content: "What queue library should we use?" },
          { role: "assistant", content: "Switched to pgmq — simpler ops than Redis." }
        ],
        sourceRef:  "session-1",
        visibility: "private"
      }
    ]
  )

  res  = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
  data = JSON.parse(res.body)
  puts "jobId: #{data["items"][0]["jobId"]}"
end

persist

On this page