Skip to content

[Feature]: Go Bindings for Moss #227

@anirudh-makuluri

Description

@anirudh-makuluri

Description

We should add native Go bindings so Go devs can use Moss without spinning up an HTTP service or dealing with REST calls. Right now we have Python and TypeScript SDKs, but Go is left out.

Use case

  • Go backend engineers building APIs/microservices
  • CLI tools that need semantic search
  • Anyone who just wants a native Go library instead of HTTP overhead
client := moss.NewClient(projectID, projectKey)
results, _ := client.Query(ctx, "my-index", "query")

Proposed solution

Wrap the Rust core via C bindings + CGO. Keep the API similar to Python/TS SDKs so it's familiar.

MVP for first iteration:

  • Client — create, load indexes
  • Query — basic search
  • DocumentInfo — document structure
  • Error handling
  • Tests + examples
  • Linux x86_64 for now (other platforms later)

Structure:

sdks/go/
├── cgo/          # C bindings
├── moss/         # Go SDK
├── bindings/     # Rust FFI
└── examples/

I can work on this solo.
Timeline: ~6-7 weeks

Alternatives considered

  • Just use HTTP APIs? Works, but adds latency and complexity for local use
  • Wait for something better? Nah, bindings are the standard approach everywhere else
  • gRPC? Overkill for this

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions