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
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
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 indexesQuery— basic searchDocumentInfo— document structureStructure:
I can work on this solo.
Timeline: ~6-7 weeks
Alternatives considered