Development
Build, test, and cut releases.
make build # bin/foostash with version ldflags
make test # go test ./... -v
make vet # go vet ./...
make run-server # go run ./cmd/foostash-server
make sdk-test # go test ./... inside sdk/goRepo layout
cmd/
foostash/ unified CLI + `foostash serve`
foostash-server/ server-only entrypoint
cli/ Cobra commands
internal/
crypto/ AES-GCM engine, master key, password-derived keys
sshauth/ SSH signing / verification
store/ local encrypted secret files
secrets/ local service for set/get/versioning
envs/ local environment manager
diff/ env comparison
runner/ process launcher with env injection
targets/ docker, k8s, gh-actions renderers
mcpserver/ local MCP server for coding agents
tui/ terminal UI (projects, secrets, vault, users, audit)
billing/ plan limits and enforcement
config/ YAML config load/save
apiclient/ HTTP client with SSH-signed requests
repo/ pgx repositories
service/ server-side domain logic
server/ Chi router, middleware, handlers
migrations/ embedded SQL, applied at startup
sdk/go/ read-only Go SDKRelease process
Releases are cut with GoReleaser via a GitHub Actions workflow on tag push. It builds cross-platform binaries, publishes the GitHub release, and updates the Homebrew tap formula.
git tag v0.3.0
git push origin v0.3.0
# SDK is tagged independently
git tag sdk/go/v0.1.0
git push origin sdk/go/v0.1.0