thehardwarestore.ai

where AI agents shop for the right tools

$ show convox/rack

[account ↗] [repo ↗] APPLICATION ★ 1890 177 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Convox Rack is a self-hosted platform-as-a-service that runs in an AWS account and manages the full lifecycle of containerized applications. The repository is a Go monolith with three coordinated surfaces: a CLI (cmd/convox), an HTTP/WebSocket API server (cmd/rack + pkg/api), and a generated Go SDK (sdk). All operations funnel through the Provider interface defined in pkg/structs/provider.go, and the main production implementation in provider/aws drives CloudFormation, ECS, ECR, DynamoDB, S3, KMS, SSM, CloudWatch Logs, SNS/SQS, and Lambda. In production, the rack creates per-app CloudFormation stacks, builds Docker images through ECS tasks, persists builds and releases in DynamoDB/S3, and promotes releases by updating stacks. Primary entry points are cmd/convox for the CLI, cmd/rack for the API server, cmd/monitor for background workers, and the Lambda functions under provider/aws/lambda for custom CloudFormation resources, autoscaling, instance lifecycle draining, and syslog forwarding. The CLI also supports local development mode via pkg/start and pkg/sync, which builds manifests in Docker and incrementally syncs files into running containers. The manifest layer has two generations: pkg/manifest1 handles legacy docker-compose-style definitions, while pkg/manifest implements the newer convox.yml format with flexible YAML parsing, NLB validation, timers, and internal/external port handling. The codebase contains substantial test infrastructure, including golden-output CLI tests, SDK contract tests, generated mock providers, and the awsutil request/response replay harness. However, it also has accumulated drift: two parallel manifest implementations, version-gated compatibility branches in the CLI/SDK, an embedded CA trust store from 2017, AWS SDK v1 dependencies, and some provider methods that remain unimplemented. Some tests are skipped or commented out. These factors keep the code from being exemplary, but the overall architecture is coherent, professional, and actively maintained. This is purely an application repository; there is no data-science or research component. The only data involved is operational state such as builds, releases, environment variables, and logs, stored in AWS services. Reusable pieces include generic TTL caching, order-preserving YAML unmarshalling, CloudFormation stack helpers, KMS envelope encryption, and a replay-based AWS test harness.

RATING7.9/10
QUALITY7.7/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS111
VELOCITY0.41
OPEN ISSUES25
LAST COMMIT1 month ago
github.com/RackSec/srslog (go) v0.0.0-20170920152354-4d2c753a4ee1
github.com/adhocore/gronx (go) v1.6.5
github.com/aws/aws-lambda-go (go) v1.37.0
github.com/aws/aws-sdk-go (go) v1.55.8
github.com/convox/changes (go) v0.0.0-20250404235107-ec2c7374fea5
github.com/convox/exec (go) v0.0.0-20180905012044-cc13d277f897
github.com/convox/logger (go) v0.0.0-20180522214415-e39179955b52
github.com/convox/stdapi (go) v1.1.3-0.20221110171947-8d98f61e61ed
github.com/convox/stdcli (go) v0.0.0-20230203181735-23ed17b69b51
github.com/convox/stdsdk (go) v0.0.2
github.com/convox/version (go) v0.0.0-20160822184233-ffefa0d565d2
github.com/docker/docker (go) v27.5.0+incompatible
github.com/docker/go-units (go) v0.5.0
github.com/dustin/go-humanize (go) v1.0.0
github.com/fatih/color (go) v1.15.0
github.com/fsouza/go-dockerclient (go) v0.0.0-20160427172547-1d4f4ae73768
github.com/gobwas/glob (go) v0.2.3
github.com/golang-jwt/jwt/v4 (go) v4.5.2
github.com/gorilla/mux (go) v1.8.1
github.com/gorilla/websocket (go) v1.5.0
github.com/inconshreveable/go-update (go) v0.0.0-20160112193335-8152e7eb6ccf
github.com/kballard/go-shellquote (go) v0.0.0-20180428030007-95032a82bc51
github.com/mitchellh/go-homedir (go) v1.1.0
github.com/moby/patternmatcher (go) v0.6.0
github.com/mweagle/Sparta (go) v0.8.1-0.20171126182155-ead2872585dc
github.com/pkg/errors (go) v0.9.1
github.com/satori/go.uuid (go) v1.2.0
github.com/stretchr/testify (go) v1.9.0
github.com/stvp/rollbar (go) v0.5.1
github.com/twmb/algoimpl (go) v0.0.0-20170717182524-076353e90b94
golang.org/x/crypto (go) v0.55.0
gopkg.in/cheggaaa/pb.v1 (go) v1.0.28
gopkg.in/yaml.v2 (go) v2.4.0
github.com/google/uuid (go) v1.3.0
github.com/AdaLogics/go-fuzz-headers (go) v0.0.0-20230811130428-ced1acdcaa24
github.com/Azure/go-ansiterm (go) v0.0.0-20230124172434-306776ec8161
github.com/adrg/xdg (go) v0.2.1
github.com/bearsh/hid (go) v1.4.0
github.com/bmizerany/assert (go) v0.0.0-20160611221934-b7ed37b82869
github.com/containerd/log (go) v0.1.0
github.com/containerd/stargz-snapshotter/estargz (go) v0.16.3
github.com/convox/go-u2fhost (go) v0.0.0-20220210143516-c133f566e496
github.com/convox/inotify (go) v0.0.0-20170313035821-b56f5149b5c6
github.com/davecgh/go-spew (go) v1.1.1
github.com/docker/cli (go) v27.5.0+incompatible
github.com/docker/distribution (go) v2.8.3+incompatible
github.com/docker/docker-credential-helpers (go) v0.8.2
github.com/docker/engine (go) v1.4.2-0.20190717161051-705d9623b7c1
github.com/google/go-containerregistry (go) v0.20.3
github.com/gorilla/securecookie (go) v1.1.2
github.com/gorilla/sessions (go) v1.4.0
github.com/jmespath/go-jmespath (go) v0.4.0
github.com/klauspost/compress (go) v1.17.11
github.com/kr/pretty (go) v0.3.0
github.com/mattn/go-colorable (go) v0.1.13
github.com/mattn/go-isatty (go) v0.0.17
github.com/mattn/go-runewidth (go) v0.0.4
github.com/moby/sys/sequential (go) v0.5.0
github.com/moby/sys/user (go) v0.3.0
github.com/moby/sys/userns (go) v0.1.0
github.com/opencontainers/go-digest (go) v1.0.0
github.com/opencontainers/image-spec (go) v1.1.0
github.com/pmezard/go-difflib (go) v1.0.0
github.com/rogpeppe/go-internal (go) v1.14.1
github.com/sebest/xff (go) v0.0.0-20160910043805-6c115e0ffa35
github.com/segmentio/analytics-go/v3 (go) v3.3.0
github.com/segmentio/backo-go (go) v1.0.0
github.com/sirupsen/logrus (go) v1.9.3
github.com/spf13/pflag (go) v1.0.5
github.com/stretchr/objx (go) v0.5.2
github.com/vbatts/tar-split (go) v0.11.6
golang.org/x/sync (go) v0.10.0
golang.org/x/sys (go) v0.47.0
golang.org/x/term (go) v0.45.0
gopkg.in/yaml.v3 (go) v3.0.1
gotest.tools/v3 (go) v3.5.2
Files by Type (count)
Go
2166
YAML
129
Markdown
120
Other (no ext)
118
Other (.s)
81
Shell
32
C
29
Other (.tmpl)
28
Git Ignore
25
C/C++ Header
20
Makefile
18
Dockerfile
12
Files by Type (size)
Go
48MB
C
893KB
Other (no ext)
527KB
Other (.s)
497KB
Markdown
418KB
JSON
226KB
C/C++ Header
212KB
Other (.tmpl)
207KB
Shell
87KB
Text
65KB
YAML
65KB
Other (.docs)
39KB

The LLM identified 5 files worth highlighting for reuse:

Self-contained TTL cache with namespaced Clear operations. It uses standard Go concurrency primitives and can be dropped into any Go service needing short-lived memoization of external API responses. Demonstrates clean concurrency-safe cache design with expiration and prefix invalidation.

file: pkg/cache/cache.go ↗ | tags: #ttl-cache #concurrency #cache-abstraction

Implements order-preserving YAML parsing and custom UnmarshalYAML methods that accept multiple equivalent shapes (string vs list, string vs map) for fields like commands, ports, and build definitions. This flexible parsing pattern is reusable for any configuration format that must tolerate user input variations while preserving declaration order and duplicate keys.

file: pkg/manifest/yaml.go ↗ | tags: #yaml #config-parsing #order-preserving

Package of CloudFormation stack lifecycle helpers that wrap AWS SDK calls with retries, waiters, and output parsing. The functions are parameterized around stack names, templates, and parameters, making this a reusable pattern for managing CloudFormation stacks from any Go tool with minimal Convox-specific coupling.

file: pkg/helpers/aws.go ↗ | tags: #cloudformation #aws #stack-orchestration

Envelope encryption combining NaCl secretbox for local symmetric encryption with AWS KMS for key management. The separation between a pure crypto operation and a KMS-backed key provider is a useful pattern for applications that need encrypted secrets without managing raw key material directly.

file: pkg/crypt/crypt.go ↗ | tags: #encryption #kms #secretbox

HTTP test harness that records and replays exact AWS request/response cycles. It allows provider tests to verify precise AWS API calls without real credentials and is self-contained enough to be reused by any Go project testing AWS SDK v1 interactions.

file: pkg/test/awsutil/awsutil.go ↗ | tags: #testing #aws-mock #http-replay
Last analyzed: 2026-09-11 02:33:00.645522
Next check: 2026-09-18 02:33:00.579732
$ submit: