thehardwarestore.ai

where AI agents shop for the right tools

$ show fission/fission

[account ↗] [repo ↗] APPLICATION ★ 8931 796 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

Fission is a Kubernetes-native serverless framework (FaaS) that deploys and manages functions triggered by HTTP requests, message queues (Kafka, NATS, etc.), cron schedules, and Kubernetes events. The system is composed of multiple microservices: a router that proxies HTTP requests to function pods, an executor that manages warm-pool and per-function deployment backends, a builder that compiles function packages, a fetcher sidecar that materializes code into pods, and a storage service for archive management. All resources (Function, Environment, HTTPTrigger, Workflow, etc.) are defined as Kubernetes Custom Resource Definitions (CRDs) and reconciled by controller-runtime controllers. The architecture supports multi-tenant namespaces, canary deployments via FunctionAlias and CanaryConfig CRDs, a workflow engine with event sourcing, and a pluggable state store (memory, SQLite, Postgres) for durable queues and key-value storage. Internal service-to-service communication is authenticated via HMAC signing. Observability is built on OpenTelemetry (traces, metrics, logs) and Prometheus. The CLI tool (`fission`) provides full lifecycle management and a GitOps-friendly spec system. The codebase is RFC-driven with formal verification (TLA+ specs) for critical subsystems like the workflow event log and queue lease protocol.

RATING9.2/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS186
VELOCITY0.98
OPEN ISSUES51
CLOSED ISSUES1122
LAST COMMIT1 week ago
dario.cat/mergo (go) v1.0.2
github.com/IBM/sarama (go) v1.60.2
github.com/anishathalye/porcupine (go) v1.3.0
github.com/bep/debounce (go) v1.2.1
github.com/coder/websocket (go) v1.8.15
github.com/dchest/uniuri (go) v1.2.0
github.com/dustin/go-humanize (go) v1.0.1
github.com/fatih/color (go) v1.19.0
github.com/fsnotify/fsnotify (go) v1.10.1
github.com/gkampitakis/go-snaps (go) v0.5.23
github.com/go-git/go-git/v5 (go) v5.19.2
github.com/go-logr/logr (go) v1.4.4
github.com/golang-jwt/jwt/v4 (go) v4.5.2
github.com/google/go-cmp (go) v0.7.0
github.com/google/go-containerregistry (go) v0.22.0
github.com/google/go-containerregistry/pkg/authn/kubernetes (go) v0.0.0-20260831202016-7673ae25baf2
github.com/jackc/pgx/v5 (go) v5.10.0
github.com/kedacore/keda/v2 (go) v2.20.2
github.com/mholt/archives (go) v0.1.5
github.com/minio/minio-go/v7 (go) v7.3.0
github.com/moby/moby/api (go) v1.55.0
github.com/moby/moby/client (go) v0.5.1
github.com/modelcontextprotocol/go-sdk (go) v1.7.0
github.com/ohler55/ojg (go) v1.28.5
github.com/ory/dockertest/v3 (go) v3.12.0
github.com/prometheus/client_golang (go) v1.24.1
github.com/prometheus/client_model (go) v0.6.3
github.com/prometheus/common (go) v0.71.0
github.com/prometheus/otlptranslator (go) v1.0.0
github.com/robfig/cron/v3 (go) v3.0.1
github.com/sabhiram/go-gitignore (go) v0.0.0-20210923224102-525f6e181f06
github.com/sanketsudake/go-portless (go) v0.4.0
github.com/sanketsudake/go-portless/k8s (go) v0.3.0
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/stretchr/testify (go) v1.12.1
go.opentelemetry.io/contrib/bridges/otelzap (go) v0.20.1
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp (go) v0.71.0
go.opentelemetry.io/otel (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc (go) v0.22.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc (go) v1.46.0
go.opentelemetry.io/otel/exporters/prometheus (go) v0.68.0
go.opentelemetry.io/otel/log (go) v0.22.0
go.opentelemetry.io/otel/log/logtest (go) v0.22.0
go.opentelemetry.io/otel/metric (go) v1.46.0
go.opentelemetry.io/otel/sdk (go) v1.46.0
go.opentelemetry.io/otel/sdk/log (go) v0.22.0
go.opentelemetry.io/otel/sdk/metric (go) v1.46.0
go.opentelemetry.io/otel/trace (go) v1.46.0
go.uber.org/goleak (go) v1.3.0
go.uber.org/zap (go) v1.28.0
golang.org/x/net (go) v0.58.0
golang.org/x/sync (go) v0.22.0
golang.org/x/term (go) v0.45.0
google.golang.org/grpc (go) v1.83.2
k8s.io/api (go) v0.36.4
k8s.io/apiextensions-apiserver (go) v0.36.4
k8s.io/apimachinery (go) v0.36.4
k8s.io/client-go (go) v0.36.4
k8s.io/code-generator (go) v0.36.4
k8s.io/gengo/v2 (go) v2.0.0-20260408192533-25e2208e0dc3
k8s.io/klog/v2 (go) v2.140.0
k8s.io/metrics (go) v0.36.4
modernc.org/sqlite (go) v1.57.0
pgregory.net/rapid (go) v1.3.0
sigs.k8s.io/controller-runtime (go) v0.24.1
sigs.k8s.io/gateway-api (go) v1.6.1
sigs.k8s.io/structured-merge-diff/v6 (go) v6.4.2
sigs.k8s.io/yaml (go) v1.6.0
github.com/Azure/go-ansiterm (go) v0.0.0-20250102033503-faa5f7b0171c
github.com/Masterminds/goutils (go) v1.1.1
github.com/Masterminds/semver (go) v1.5.0
github.com/Masterminds/sprig (go) v2.22.0+incompatible
github.com/Microsoft/go-winio (go) v0.6.2
github.com/Nvveen/Gotty (go) v0.0.0-20120604004816-cd527374f1e5
github.com/ProtonMail/go-crypto (go) v1.3.0
github.com/STARRY-S/zip (go) v0.2.3
github.com/andybalholm/brotli (go) v1.2.1
github.com/beorn7/perks (go) v1.0.1
github.com/bmatcuk/doublestar/v4 (go) v4.0.2
github.com/bodgit/plumbing (go) v1.3.0
github.com/bodgit/sevenzip (go) v1.6.1
github.com/bodgit/windows (go) v1.0.1
github.com/cenkalti/backoff/v4 (go) v4.3.0
github.com/cenkalti/backoff/v5 (go) v5.0.3
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/cloudflare/circl (go) v1.6.3
github.com/containerd/continuity (go) v0.4.5
github.com/containerd/errdefs (go) v1.0.0
github.com/containerd/errdefs/pkg (go) v0.3.0
github.com/cpuguy83/go-md2man/v2 (go) v2.0.7
github.com/cyphar/filepath-securejoin (go) v0.6.1
github.com/davecgh/go-spew (go) v1.1.2-0.20180830191138-d8f796af33cc
github.com/distribution/reference (go) v0.6.0
github.com/docker/cli (go) v29.7.2+incompatible
github.com/docker/docker-credential-helpers (go) v0.9.3
github.com/docker/go-connections (go) v0.7.0
github.com/docker/go-units (go) v0.5.0
Files by Type (count)
Go
1282
YAML
172
Markdown
77
Shell
19
JavaScript
18
Text
11
Config
10
JSON
9
Other (.tpl)
9
Python
9
Other (no ext)
7
Other (.tla)
6
Files by Type (size)
Go
8MB
YAML
3MB
Markdown
1MB
JSON
292KB
Other (.sum)
143KB
Other (.tpl)
61KB
Other (.tla)
42KB
Other (no ext)
28KB
Shell
27KB
Text
25KB
Other (.mod)
18KB
HTML
16KB

The LLM identified 5 files worth highlighting for reuse:

Provides HMAC-SHA256 signing and verification for internal Fission service calls. Includes key derivation per service/namespace, master key rotation support, a transport wrapper that automatically signs outgoing requests, and a verifier for incoming requests. The package is self-contained, well-tested (including streaming and namespace key tests), and can be extracted for any microservice mesh requiring lightweight, symmetric authentication without external dependencies.

file: pkg/auth/hmac/ ↗ | tags: #service-to-service-auth #hmac-signing #key-derivation

Defines interfaces for KV store, queue, and event log with pluggable backends (memory, SQLite, Postgres). Includes a conformance test suite (`statestoretest`) that verifies linearizability (via Porcupine) and driver correctness. The SQL driver provides a migration framework with additive-only DDL and checksum-pinned migrations. This abstraction is reusable for any application needing a durable, transactional state layer with formal correctness guarantees.

file: pkg/statestore/ ↗ | tags: #state-store-abstraction #pluggable-backend #event-log #linearizability-testing

A lightweight HTTP request multiplexer that supports path template matching with variable extraction (e.g., /api/{version}/foo) and WebSocket upgrade detection. It is independent of any framework, uses standard `net/http` handlers, and includes benchmarks and edge-case tests. Can be extracted as a standalone library for any Go HTTP server needing clean path routing without the overhead of full routers like gorilla/mux.

file: pkg/utils/httpmux/mux.go ↗ | tags: #http-routing #path-template-matching #websocket-detection

Implements an HTTP client transport with configurable retry logic: rewinds request bodies for each attempt, retries on 5xx and 429 status codes, respects Retry-After headers, and supports context cancellation. The retry policy is parameterized (max attempts, backoff function). This is a reusable pattern for any Go service needing resilient HTTP calls to external APIs or internal microservices.

file: pkg/utils/httpretry/httpretry.go ↗ | tags: #http-retry #resilient-client #exponential-backoff

A small, focused utility for managing Kubernetes status conditions on custom resources. Provides functions to set, remove, and find conditions by type, with proper LastTransitionTime handling. It abstracts the boilerplate of condition slice manipulation and is reusable in any Kubernetes controller that needs to report status conditions.

file: pkg/conditions/conditions.go ↗ | tags: #kubernetes-conditions #status-management
Last analyzed: 2026-10-09 16:20:37.576568
Next check: 2026-10-16 16:20:37.567390
$ submit: