Skip to content

Embedding in Go

Coder8124 edited this page Oct 31, 2026 · 1 revision

Embedding in Go

MCP is for hosts you don't control. If you're writing the agent yourself, import the engine directly. You get the same vault and the same files, with no subprocess and no protocol.

go get github.com/Coder8124/logos@latest

Releases before the rename were published as github.com/Coder8124/brain. Asking for that path at a newer version fails with a module path mismatch.

The loop

b, err := logos.Open("/path/to/vault", logos.WithAgent("my-agent"))
if err != nil {
    log.Fatal(err)
}
defer b.Close()

// Starting a task: what did the last agent leave behind?
c, _ := b.Resume("kestrel-one")
fmt.Println(c.Render()) // drop straight into a system prompt

// About to propose something: has it already been ruled out?
approach := "re-quoting the waveguide to bring the BOM down"
if ruled, _ := b.Tried(approach, "kestrel-one"); len(ruled) > 0 {
    fmt.Println(logos.Explain(approach, ruled))
}

// Finishing: record where you stopped.
b.Note("kestrel-one", "re-quoted the waveguide; no movement under 10k units")
b.Checkpoint(logos.Checkpoint{
    Project: "kestrel-one",
    Failed:  []string{"re-quoting the waveguide — no movement under 10k units"},
    Next:    "quote the display driver alternatives",
})

The rest of the API

Context, Remember / Recall / Forget, Search, Ask, History, Projects, Index, and ServeMCP if you'd rather serve the tools than call them.

  • logos.WithoutEmbedding() skips model discovery entirely, which is what you want in CI.
  • examples/handoff runs the whole thing end to end: one agent works and stops, another opens the same vault and continues.

Everything else stays under internal/ on purpose, so retrieval, budgeting and consolidation can change without breaking you. The exported domain types are aliases for the internal ones, so they are part of the contract.

Clone this wiki locally