Skip to content

Commit

Permalink
feat(protos): add buf support to generate gRPC clients and servers us…
Browse files Browse the repository at this point in the history
…ing connect
  • Loading branch information
pyadav committed Jan 18, 2024
1 parent 9ab4a3c commit 3811280
Show file tree
Hide file tree
Showing 27 changed files with 2,690 additions and 27 deletions.
8 changes: 6 additions & 2 deletions Makefile
@@ -1,8 +1,12 @@
default: build

build: build-backend
build: build-protos build-backend
.PHONY: build

build-backend:
sh -c "cd ./backend && make all"
.PHONY: build-backend
.PHONY: build-backend

build-protos:
sh -c "cd ./protos && make all"
.PHONY: build-protos
19 changes: 19 additions & 0 deletions README.md
@@ -0,0 +1,19 @@
## Introduction
[Missing studio](https://www.missing.studio) is a robust open source platform to build a developer-first way to create
AI application using LLM, Image, Audio and Video Studios.


## Features
- 🌐 *Universal API* - Call every LLM API like it's OpenAI
- *AI Gateway* for rate limit, atomatic retries, caching, failover etc
- Workflow builder to compose complex AI apps
- AI Agents
- LLM Studio to bring LLM applications to production
- Image studio
- Audio studio
- Video studio
- Storage to connect with providers like s3, gcs, vector DBs etc.
- Inference and serving to serve AI/ML models in production
- Finetune models
- Model Deployment at Scale on Kubernetes 🦄️
- Dev tools – all missing studio dev tools (CLI, SDK, API Client)
12 changes: 6 additions & 6 deletions backend/Makefile
Expand Up @@ -6,22 +6,22 @@ all: build
vet:
$(GO) vet ./...

build: vet
build: gen vet
scripts/build.sh
.PHONY: build

dbuild: vet
dbuild: gen vet
GOOS=linux scripts/build.sh
.PHONY: dbuild

run:
./bin/mgmt serve connect
.PHONY: run

# build-debug:
# CGO_ENABLED=0 $(GO) build -gcflags="all=-N -l" -o bin/mgmt cmd/mgmt/*.go
# .PHONY: build-debug

gen:
sh -c "cd ../protos && make all"
.PHONY: gen

clean:
rm -rf bin
.PHONY: clean
Expand Down
7 changes: 6 additions & 1 deletion backend/go.mod
Expand Up @@ -2,11 +2,14 @@ module github.com/missingstudio/studio/backend

go 1.21.5

replace github.com/missingstudio/studio/protos => ../protos

require (
connectrpc.com/connect v1.14.0
connectrpc.com/grpchealth v1.3.0
connectrpc.com/grpcreflect v1.2.0
connectrpc.com/validate v0.1.0
github.com/missingstudio/studio/protos v0.0.0-00010101000000-000000000000
github.com/rs/cors v1.10.1
github.com/stretchr/testify v1.8.4
github.com/zeebo/assert v1.3.1
Expand All @@ -19,11 +22,13 @@ require (
github.com/bufbuild/protovalidate-go v0.3.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/google/cel-go v0.17.4 // indirect
github.com/missingstudio/protos v0.0.0-20240118094218-a89cc79e77c2 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/protobuf v1.32.0 // indirect
Expand Down
28 changes: 14 additions & 14 deletions backend/go.sum
Expand Up @@ -21,18 +21,18 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
github.com/google/cel-go v0.17.4 h1:9556LOjSyIZlgnT0oaCYGq2uk9BM6fzuTXhzYHskonk=
github.com/google/cel-go v0.17.4/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/missingstudio/protos v0.0.0-20240117082200-e7d28f6e1b95 h1:HU8E6CgVslGooBuuKGtocy3NMz3bScv96HEGFZT6Umg=
github.com/missingstudio/protos v0.0.0-20240117082200-e7d28f6e1b95/go.mod h1:NhgmLsBUuSD/N9PeohnGbftWgUPTmjWHTzgU4yA+414=
github.com/missingstudio/protos v0.0.0-20240118094218-a89cc79e77c2 h1:kf22kKJa/fY7fE60lFotRwq1Qwn1ETe9Y3h9ceNpTu4=
github.com/missingstudio/protos v0.0.0-20240118094218-a89cc79e77c2/go.mod h1:TrD8riaWSVps9L5iZFLc6XAa4zEYJQVBOcNDbFBEYSs=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo=
github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
Expand All @@ -54,19 +54,19 @@ golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM=
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos=
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY=
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM=
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
4 changes: 2 additions & 2 deletions backend/internal/connectrpc/mux.go
Expand Up @@ -10,8 +10,8 @@ import (
"connectrpc.com/grpchealth"
"connectrpc.com/grpcreflect"
"connectrpc.com/validate"
greetingv1 "github.com/missingstudio/protos/pkg/greeting/v1"
"github.com/missingstudio/protos/pkg/greeting/v1/greetingv1connect"
greetingv1 "github.com/missingstudio/studio/protos/pkg/greeting/v1"
"github.com/missingstudio/studio/protos/pkg/greeting/v1/greetingv1connect"
)

type Deps struct{}
Expand Down
4 changes: 2 additions & 2 deletions backend/main_test.go
Expand Up @@ -8,9 +8,9 @@ import (

"connectrpc.com/connect"

greetingv1 "github.com/missingstudio/protos/pkg/greeting/v1"
"github.com/missingstudio/protos/pkg/greeting/v1/greetingv1connect"
"github.com/missingstudio/studio/backend/internal/connectrpc"
greetingv1 "github.com/missingstudio/studio/protos/pkg/greeting/v1"
"github.com/missingstudio/studio/protos/pkg/greeting/v1/greetingv1connect"

"github.com/stretchr/testify/require"
"github.com/zeebo/assert"
Expand Down
1 change: 1 addition & 0 deletions go.work
Expand Up @@ -4,4 +4,5 @@ use (
./backend
./cli
./worker
./protos
)
5 changes: 5 additions & 0 deletions protos/.gitignore
@@ -0,0 +1,5 @@
node_modules/
/target
.vscode/
/obj
/bin
7 changes: 7 additions & 0 deletions protos/Makefile
@@ -0,0 +1,7 @@
default: all

all: build

build:
buf generate proto
.PHONY: build
12 changes: 12 additions & 0 deletions protos/README.md
@@ -0,0 +1,12 @@
## Protos
For protobuf based API development. Buf will take care of protobuf generation for each language.
- Buf modules
- Buf plugins

### Basic
1. buf mod init
2. buf mod update
3. buf build
4. buf generate proto
5. buf lint proto
6. buf curl --schema proto http://localhost:8080/missingstudio.v1.PingService/Ping
32 changes: 32 additions & 0 deletions protos/buf.gen.yaml
@@ -0,0 +1,32 @@
version: v1
managed:
enabled: true
go_package_prefix:
default: github.com/missingstudio/studio/protos/pkg
except:
- buf.build/googleapis/googleapis
- buf.build/bufbuild/protovalidate
- buf.build/grpc-ecosystem/grpc-gateway

plugins:
# Go Plugins
- plugin: buf.build/connectrpc/go:v1.14.0
out: pkg
opt: paths=source_relative

- plugin: buf.build/protocolbuffers/go:v1.32.0
out: pkg
opt: paths=source_relative

# Typescript plugins
- plugin: buf.build/bufbuild/es:v1.6.0
opt:
- target=ts
- import_extension=
out: src

- plugin: buf.build/connectrpc/es:v1.2.0
opt:
- target=ts
- import_extension=
out: src
3 changes: 3 additions & 0 deletions protos/buf.work.yaml
@@ -0,0 +1,3 @@
version: v1
directories:
- proto
17 changes: 17 additions & 0 deletions protos/go.mod
@@ -0,0 +1,17 @@
module github.com/missingstudio/studio/protos

go 1.21.5

require (
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230824200731-b9b8148056b9.1
connectrpc.com/connect v1.14.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917
google.golang.org/protobuf v1.32.0
)

require (
golang.org/x/net v0.20.0 // indirect
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect
)
25 changes: 25 additions & 0 deletions protos/go.sum
@@ -0,0 +1,25 @@
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230824200731-b9b8148056b9.1 h1:9Ea7lsYYvoyqmq79GbCy6POXHrZbC+pHs+6lGNx9IBQ=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230824200731-b9b8148056b9.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew=
connectrpc.com/connect v1.14.0 h1:PDS+J7uoz5Oui2VEOMcfz6Qft7opQM9hPiKvtGC01pA=
connectrpc.com/connect v1.14.0/go.mod h1:uoAq5bmhhn43TwhaKdGKN/bZcGtzPW1v+ngDTn5u+8s=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos=
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY=
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM=
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=

0 comments on commit 3811280

Please sign in to comment.