Skip to content

“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.

Entity image

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

Demo image