Docs › SDK & CLI › Go

Go SDK

Full reference for the NotiLens Go SDK. Requires Go 1.19+.

Installation

Install

go get github.com/notilens/sdk-go
Setup

Initialize

import notilens "github.com/notilens/sdk-go"

nl, err := notilens.Init("my-app", notilens.Options{
    Token:  "YOUR_TOKEN",
    Secret: "YOUR_SECRET",
})

// Or use environment variables: NOTILENS_TOKEN / NOTILENS_SECRET
nl, err := notilens.Init("my-app")
Task Lifecycle

Task Events

Real-world uses: wrap an AI research agent (start → progress → complete/fail), a nightly invoice import (loop per batch → complete), or a user-triggered export (start → output_generated → complete).

run := nl.Task("email")
run.Queue()
run.Start()

run.Progress("Fetching records...")
run.Loop("Processing batch 2")
run.Retry()
run.Pause("Rate limited")
run.Resume("Resuming")
run.Wait("Awaiting tool")
run.Error("Non-fatal error")

run.Complete("All done")
run.Fail("Unrecoverable")
run.Timeout("Exceeded 30s")
run.Cancel("User cancelled")
run.Terminate("OOM")
Metrics

Metrics

Real-world uses: track LLM token spend across a multi-step run. Monitor records in a nightly ETL — NotiLens alerts if count drops vs baseline. Watch API error rate across runs.

run.Metric("tokens", 350)
run.Metric("tokens", 210)    // now 560
run.Metric("cost", 0.0012)
run.Metric("model", "gpt-4")

run.ResetMetrics("tokens")
run.ResetMetrics()
Full Example

Complete Working Example

import notilens "github.com/notilens/sdk-go"

nl,  _ := notilens.Init("summarizer", notilens.Options{Token: "TOKEN", Secret: "SECRET"})
run    := nl.Task("report")
run.Start()

defer func() {
    if r := recover(); r != nil {
        run.Fail(fmt.Sprintf("%v", r))
    }
}()

run.Progress("Fetching PDF")
result := llm.Complete(prompt)
run.Metric("tokens", result.Usage.TotalTokens)
run.Metric("cost", result.Usage.Cost)
run.OutputGenerated("Summary ready")
run.Complete("Done")
force_send

ForceSend Parameter

Controls whether a notification bypasses ML-based filtering (true) or routes through it (false).

MethodDefault
Notify() · Fail() · Timeout() · Terminate()true
InputRequired() · OutputGenerated() · OutputFailed()true
All other task lifecycle methodsfalse — ML filtered

Override

run.Progress("Fetching...", notilens.WithForceSend(true))
run.Fail("Error", notilens.WithForceSend(false))
nl.Notify("order.placed", "Done", notilens.WithForceSend(false))