We're excited to have you here to imagine, create, and scale your applications beyond the cloud. The documentation here serves as a home for guides, tutorials, reference applications, and answers to common questions about Cosmonic.
First time with Cosmonic?
- Read our product page to get a short overview of what we can do for you (why we are magic!)
- Check out our how it works section to understand the technical details of the product
- Learn about developing with Cosmonic and how we empower you to reduce duplicative code in your codebase and applications (and makes your app more securable long term)
- Run your first Wasm application in Cosmonic!
What is Cosmonic?
Cosmonic is a platform that allows you to run your code, in Wasm, on any cloud, any device and any edge. We provide a powerful cross cloud lattice (mesh) network, allowing all of your services, devices and applications to securely talk to each other wherever they are running. We support and are powered by Wasm components, empowering you to split your repetitive non-functional requirements out into their own components and focus on the code you want to write.
You can use Cosmonic to:
- Host your server side Wasm applications in our first class cloud environment
- Connect your own wasmCloud hosts together. Running your code on any cloud, on any edge, all in the same secure network
Cosmonic is powered by the open-source wasmCloud project. At its heart is NATS (for networking) and contract driven development. NATS provides a simple, self-healing mesh network, which we call your constellation. The network has a flat topology, providing an isolated space that allows all of your services to communicate securely. You have full control over the ingress points into your application with Cosmonic’s wormholes (yes, we like space things!).
Our contract driven development embraces the existing pattern of capabilities. Regular Wasm modules operate in a completely isolated sandbox, with no access to the operating system, I/O, networking, etc. We then use abstractions called interfaces, which let us define the capabilities we want to use (just like granting access to Bluetooth on your phone). They give our code access to things like key-value stores, HTTP servers, HTTP clients, etc. at runtime, rather than at compile time. By decoupling capabilities from your code, we can swap them out at runtime if we want, removing hard dependencies on services and avoiding vendor lock-in. This means we don’t need to re-write everything every time; we can simply rely on our contracts to provide what we need 🎉
Cosmonic embraces Wasm Components. Components let us snap together pieces of code that communicate via interfaces (in our contract driven development). This lets us build applications that are composed of many components, each of which can be written in a different language, and each of which can be updated independently. Meaning that our run time dependencies are now language agnostic!
When to use Cosmonic
Cosmonic is the ideal platform for Wasm applications that need to communicate across clouds and out to edge devices (IoT, Desktop or mobile). We are on the road support all programming languages (with Rust and TinyGo today), thanks to the work done with the component model, and we can also run your server side Wasm applications for you in our cloud.
When you use Cosmonic, you are responsible for your code and the contracts between the components. Cosmonic handles the networking between all of your components as part of your constellation. This is in exchange for moving to a contract driven approach to development, which means many codebases cannot simply "lift and shift." To find out more about what it takes to move an application into wasmCloud, check out our new docs section.
New to Wasm?
Check out our introduction to WebAssembly (Wasm) for those who are new to the space! Learn more here
Check out our Discord!