Go SDK
Built for high-throughput production deployments. Supports concurrent sessions, context cancellation, and first-class goroutine safety. Requires Go 1.21+.
Installation
go get github.com/amareshhebbar/truenorth-goInitialize
package mainimport ( "context" "fmt" "log" "os" truenorth "github.com/amareshhebbar/truenorth-go")func main() { engine, err := truenorth.NewEngine(truenorth.Config{ Provider: "openai", Model: "gpt-4o-mini", APIKey: os.Getenv("OPENAI_API_KEY"), }) if err != nil { log.Fatal(err) } defer engine.Close()}Session Management
ctx := context.Background()session, err := engine.CreateSession(ctx, truenorth.SessionConfig{ YAMLPath: "agents/medical_intake.yaml", SessionID: "sess_abc123",})if err != nil { log.Fatal(err)}resp, err := session.Send(ctx, "I'm Priya, I'm 28 years old")if err != nil { log.Fatal(err)}fmt.Println(resp.Message) // "Thanks Priya! What is your primary goal?"fmt.Println(resp.Complete) // falsefmt.Printf("%.6f USD\n", resp.CostUSD) // 0.000043 USDConcurrent Sessions
The engine is goroutine-safe — share a single instance across all goroutines.
var wg sync.WaitGroupresults := make(chan *truenorth.SessionOutput, 100)for _, intake := range intakes { wg.Add(1) go func(data IntakeData) { defer wg.Done() session, _ := engine.CreateSession(ctx, truenorth.SessionConfig{ YAMLPath: "agents/medical_intake.yaml", }) for _, msg := range data.Messages { resp, _ := session.Send(ctx, msg) if resp.Complete { results <- session.GetOutput() return } } }(intake)}wg.Wait()close(results)HTTP Handler
func (h *Handler) Chat(w http.ResponseWriter, r *http.Request) { var req struct { SessionID string `json:"session_id"` Message string `json:"message"` } json.NewDecoder(r.Body).Decode(&req) session, err := h.engine.GetOrCreate(r.Context(), req.SessionID, truenorth.SessionConfig{YAMLPath: "agents/screening.yaml"}) if err != nil { http.Error(w, err.Error(), 500) return } resp, err := session.Send(r.Context(), req.Message) if err != nil { http.Error(w, err.Error(), 500) return } json.NewEncoder(w).Encode(resp)}