“The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.” - Edsger W. Dijkstra
tc (topology composer) provides a higher-level abstraction for serverless development, focusing on the logical relationships between abstract entities (functions, events, routes, queues, channels, mutations and pages) rather than the underlying infrastructure details. tc is a stateless, graph-based, cloud-agnostic* application composer.
tc compiles a tree of entities defined in the filesystem as a topology. This composable, namespaced, sandboxed, recursive, versioned and isomorphic topology is called a Cloud Functor
. A Cloud Functor has 3 key concepts - Entity Abstraction, Namespacing and Entity Composition. tc implements the Cloud Functor pattern.
Cloud Functor and tc bring the abstractions and joy of functional programming to serverless computing.
tc is primarily a CLI app. There are external modules which provide a HTMX-based Inspector UI, a Local Emulator and a Lisp Interpreter. The CLI app provides a core set of commands to manage the lifecycle of sandboxed topologies.
Usage: tc <COMMAND>
Commands: build Build layers, image trees, extensions and pack function code compose Compose a Topology create Create a sandboxed topology delete Delete a sandboxed topology freeze Freeze a sandbox and make it immutable invoke Invoke a topology synchronously or asynchronously prune Prune all resources in given sandbox resolve Resolve a topology snapshot Snapshot given sandbox test Run tests in topology tag Create semver tags scoped by a topology unfreeze Unfreeze a sandbox and make it mutable update Update entity and components upgrade Upgrade tc version version display current tc version