https://github.com/brandonkramer/svcroot
Service instance roots, runtime file layout, project-root discovery, and known-instance registries.
https://github.com/brandonkramer/svcroot
filesystem go golang library paths service
Last synced: 17 days ago
JSON representation
Service instance roots, runtime file layout, project-root discovery, and known-instance registries.
- Host: GitHub
- URL: https://github.com/brandonkramer/svcroot
- Owner: brandonkramer
- License: mit
- Created: 2026-05-31T15:50:22.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-31T17:06:20.000Z (about 1 month ago)
- Last Synced: 2026-05-31T17:24:40.353Z (about 1 month ago)
- Topics: filesystem, go, golang, library, paths, service
- Language: Go
- Size: 58.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# svcroot
Service instance roots, runtime file layout, project-root discovery, and known-instance registries for long-running local services.
## Install
From [pkg.go.dev](https://pkg.go.dev/github.com/brandonkramer/svcroot):
```bash
go get github.com/brandonkramer/svcroot
```
## Configure once with Service
```go
svc := &svcroot.Service{
EnvVar: "MYAPP_HOME",
DefaultDir: ".myapp",
RegistryFile: "sessions/known-instances.json", // optional
Layout: svcroot.Layout{
SessionsDir: "sessions",
SocketName: "rpc.sock",
LockName: "service.lock",
},
}
root, err := svc.Resolve()
h := svc.Open(root)
socket := h.Socket()
lock := h.Lock()
tasksDir := h.Join("tasks")
registry := h.RuntimeJoin("state.json")
```
## Legacy helpers
```go
layout := &svcroot.DefaultLayout
socket := svcroot.Socket(root, layout)
lock := svcroot.Lock(root, layout)
```
## Development
```bash
make check # race tests + linux compile + golangci-lint
make install-hooks # lefthook pre-commit/pre-push
```