-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Transform any Go program into a client of itself, remotely or locally. Manage teamservers and clients with code, with their CLI, or both.
reeflective/team is the infrastructure that turns a Go program into a teamserver
(serving its functionality to a team of operators) and a teamclient (consuming it) —
whether both run in the same process or the client connects to a remote instance over
the network. You keep writing your tool; the library handles collaboration, identity,
transport wiring, logging and configuration.
The library is deliberately authentication + PKI + identity only. It proves who is calling (certificate-based users, per-user tokens, mutual TLS) and hands that identity to you. It does not carry, store, or interpret any permission/role model — authorization stays in your application. See Introduction & Concepts.
- Introduction & Concepts — the mental model (embed once, many operators), terminology, and the auth-only direction.
- Getting Started / Embedding — install the module, build a teamserver/teamclient, graft the CLI onto your app, run it.
- Users & Authentication — create/delete users, hand out configs, import/export CAs, the PKI and mutual-TLS model.
- CLI Reference — every command and flag in the teamserver and teamclient trees.
- Common Workflows — admin bring-up, operator onboarding, daemon + systemd deployment.
- Configuration — server/client config files, directories, database backends, ports, the full options reference.
- Architecture — package layout, the core/transport split, data flow.
-
Server API — the
serverpackage surface. -
Client API — the
clientpackage surface. -
Writing a Transport — implement the
Handler(server) andDialer(client) interfaces to bring your own transport; annotated gRPC example. -
Logging — the
logpackage: restyle the console, inject your ownslog.Handler, pick a format, wire the audit log. - Testing & In-Memory Use — run the core fully in memory for tests and embedding.
// Build a teamserver core and graft its command tree under your app's root command.
teamserver, _ := server.New("myapp")
rootCmd.AddCommand(commands.Generate(teamserver, teamserver.Self()))
rootCmd.Execute() // now: `myapp teamserver ...`That already gives you a pure-Go sqlite database, file + console logging, a full mTLS PKI,
user management, and shell completion. Add a transport (server.WithHandler(...)) to serve
remote clients — see Getting Started and
Writing a Transport.
Pages are tagged so you can skip what you don't need:
| Tag | Meaning |
|---|---|
| [User] | For operators/admins driving a team tool through its CLI. |
| [Dev] | For developers embedding and extending the library in Go. |
| [User+Dev] | Relevant to both. |
- Go API reference: https://pkg.go.dev/github.com/reeflective/team
- Runnable examples:
example/(client, server, and gRPC transports)