{"id":37203775,"url":"https://github.com/streamdal/server","last_synced_at":"2026-01-14T23:29:54.171Z","repository":{"id":187593718,"uuid":"666596151","full_name":"streamdal/server","owner":"streamdal","description":null,"archived":true,"fork":false,"pushed_at":"2023-12-19T23:02:05.000Z","size":35371,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-14T21:49:07.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/streamdal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-15T00:17:06.000Z","updated_at":"2024-04-24T15:31:25.000Z","dependencies_parsed_at":"2023-08-11T10:23:29.270Z","dependency_job_id":"5b980df6-13aa-45fa-8742-5502c44dcba0","html_url":"https://github.com/streamdal/server","commit_stats":null,"previous_names":["streamdal/snitch-server","streamdal/server"],"tags_count":12,"template":false,"template_full_name":"streamdal/go-template","purl":"pkg:github/streamdal/server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamdal%2Fserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamdal%2Fserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamdal%2Fserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamdal%2Fserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streamdal","download_url":"https://codeload.github.com/streamdal/server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamdal%2Fserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28438355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T23:29:53.582Z","updated_at":"2026-01-14T23:29:54.158Z","avatar_url":"https://github.com/streamdal.png","language":"Go","readme":"streamdal-server\n================\n[![Test](https://github.com/streamdal/server/actions/workflows/main-test.yml/badge.svg)](https://github.com/streamdal/server/actions/workflows/main-test.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/streamdal/server)](https://goreportcard.com/report/github.com/streamdal/server)\n[![Pull Request](https://github.com/streamdal/server/actions/workflows/pr-test.yml/badge.svg)](https://github.com/streamdal/server/actions/workflows/pr-test.yml)\n[![Discord](https://img.shields.io/badge/Community-Discord-4c57e8.svg)](https://discord.gg/streamdal)\n\n# [THIS REPO HAS MOVED!](https://github.com/streamdal/streamdal)\n\nThe server component in the Streamdal ecosystem.\n\nThe server exposes 3 APIs:\n\n1. gRPC API on port `8082`\n   1. Used by SDKs\n2. gRPC-Web API on port `8083`\n   1. Used by the UI component\n3. REST API on port `8081`\n   1. Exposes metrics, prometheus and health-check endpoints\n\n## Development\n\nTo develop _against_ the server, you must have Go installed as you \nwill need to compile the server. You can run `make setup` which will install\nit via `brew`. Otherwise, you will have to install Go manually.\n\nTo run the server and its dependencies, run: `make run/dev`\n\nTo develop the server itself, you'll want to only run the `redis` and\n`envoy` dependencies and run `go run main.go` manually, on-demand.\n\n## gRPC API Usage\n\nYou can view the available methods by looking at [protos](https://github.com/streamdal/protos)\nor doing it via `grpcurl`:\n\n```bash\n$ grpcurl -H \"auth-token: 1234\" --plaintext localhost:8082 describe\ngrpc.reflection.v1alpha.ServerReflection is a service:\nservice ServerReflection {\n  rpc ServerReflectionInfo ( stream .grpc.reflection.v1alpha.ServerReflectionRequest ) returns ( stream .grpc.reflection.v1alpha.ServerReflectionResponse );\n}\nprotos.External is a service:\nservice External {\n  rpc CreateStep ( .protos.CreateStepRequest ) returns ( .protos.CreateStepResponse );\n  rpc DeletePipeline ( .protos.DeletePipelineRequest ) returns ( .protos.DeletePipelineResponse );\n  rpc DeleteStep ( .protos.DeleteStepRequest ) returns ( .protos.DeleteStepResponse );\n  rpc GetPipeline ( .protos.GetPipelineRequest ) returns ( .protos.GetPipelineResponse );\n  rpc GetPipelines ( .protos.GetPipelinesRequest ) returns ( .protos.GetPipelinesResponse );\n  rpc GetService ( .protos.GetServiceRequest ) returns ( .protos.GetServiceResponse );\n  rpc GetServices ( .protos.GetServicesRequest ) returns ( .protos.GetServicesResponse );\n  rpc GetSteps ( .protos.GetStepsRequest ) returns ( .protos.GetStepsResponse );\n  rpc SetPipeline ( .protos.SetPipelineRequest ) returns ( .protos.SetPipelineResponse );\n  rpc Test ( .protos.TestRequest ) returns ( .protos.TestResponse );\n  rpc UpdateStep ( .protos.UpdateStepRequest ) returns ( .protos.UpdateStepResponse );\n}\nprotos.Internal is a service:\nservice Internal {\n  rpc Heartbeat ( .protos.HeartbeatRequest ) returns ( .protos.StandardResponse );\n  rpc Metrics ( .protos.MetricsRequest ) returns ( .protos.StandardResponse );\n  rpc Notify ( .protos.NotifyRequest ) returns ( .protos.StandardResponse );\n  rpc Register ( .protos.RegisterRequest ) returns ( stream .protos.CommandResponse );\n}\n```\n\nYou can test your gRPC integration by using the `protos.Internal/Test` method\neither in code or via `grpcurl`: \n\n```\n$ grpcurl -d '{\"input\": \"Hello world\"}' -plaintext -H \"auth-token: 1234\" \\\nlocalhost:8082 protos.External/Test\n```\n\n# Encryption\n\nTo run the server, you will have to generate an AES256 key and pass it via `--aes-key` flag or `STREAMDAL_SERVER_AES_KEY` \nenvironment variable.\n\nTo generate a key, you can use the following command:\n\n```bash\nopenssl enc -aes-256-cbc -k secret -P -md sha1 -pbkdf2\n```\n\n# Testing\nMake sure to run tests via `make test`. This is necessary as we have to set\ncertain environment variables for the tests to run properly.\n\nUse `go run main.go --seed-dummy-data` to seed redis with test data for use with development and hand-testing\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamdal%2Fserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamdal%2Fserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamdal%2Fserver/lists"}