https://github.com/cerberauth/scimply
https://github.com/cerberauth/scimply
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/cerberauth/scimply
- Owner: cerberauth
- License: mit
- Created: 2026-03-19T17:18:18.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-10T21:58:06.000Z (3 months ago)
- Last Synced: 2026-05-10T23:33:31.426Z (3 months ago)
- Language: Go
- Size: 148 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Audit: audit/audit.go
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# scimply
**A complete SCIM 2.0 (and 1.1) server library for Go — RFC-compliant, zero-dependency core, and multiple backends.**
[](https://www.cerberauth.com/community)
[](https://github.com/cerberauth/scimply/actions/workflows/ci.yml)

[](https://codecov.io/gh/cerberauth/scimply)
[](https://goreportcard.com/report/github.com/cerberauth/scimply)
[](https://pkg.go.dev/github.com/cerberauth/scimply)
[](https://github.com/cerberauth/scimply)
[](https://github.com/cerberauth/scimply/blob/main/LICENSE)
---
A complete SCIM 2.0 (and 1.1) server library for Go.
## Features
- **Full SCIM 2.0** (RFC 7642, RFC 7643, RFC 7644) implementation
- **SCIM 1.1 support** via a conversion layer
- **Zero-dependency core** — `schema/`, `resource/`, `protocol/`, `store/`, `server/` use only the Go standard library
- **Filter parser** — recursive-descent ABNF parser for the full RFC 7644 filter grammar
- **PATCH engine** — complete RFC 7644 §3.5.2 semantics with atomicity
- **Multiple backends** — in-memory, PostgreSQL, MySQL/MariaDB, MongoDB, SCIM proxy
- **Compliance test suite** — reusable against any SCIM server
- **Structured audit logging**
## Quick Start
```go
package main
import (
"log"
"net/http"
"github.com/cerberauth/scimply/schema"
"github.com/cerberauth/scimply/server"
"github.com/cerberauth/scimply/store"
)
func main() {
reg := schema.NewRegistry()
reg.RegisterDefaults() // User, Group, EnterpriseUser
srv, err := server.New(
server.WithStore(store.NewMemoryStore()),
server.WithSchemaRegistry(reg),
server.WithBasePath("/scim/v2"),
server.WithBearerTokenAuth(func(token string) (bool, error) {
return token == "my-secret-token", nil
}),
)
if err != nil {
log.Fatal(err)
}
log.Println("SCIM 2.0 server listening on :8080")
log.Fatal(http.ListenAndServe(":8080", srv))
}
```
## Standalone Server
scimply also ships as a ready-to-run binary. No Go code needed — point it at a YAML config file and start serving SCIM.
```sh
# install
brew install cerberauth/tap/scimply
# or: go install github.com/cerberauth/scimply/cmd/scimply@latest
# create scimply.yaml
cat > scimply.yaml <