solo-io/unik
{ "createdAt": "2016-04-06T18:46:17Z", "defaultBranch": "master", "description": "The Unikernel & MicroVM Compilation and Deployment Platform", "fullName": "solo-io/unik", "homepage": "", "language": "Go", "name": "unik", "pushedAt": "2023-04-27T07:13:23Z", "stargazersCount": 2783, "topics": [], "updatedAt": "2025-11-20T18:43:18Z", "url": "https://github.com/solo-io/unik"}A platform for automating unikernel & MicroVM compilation and deployment
UniK (pronounced you-neek) is a tool for compiling application sources into unikernels (lightweight bootable disk images) and MicroVM rather than binaries.
UniK runs and manages instances of compiled images across a variety of cloud providers as well as locally.
UniK utilizes a simple docker-like command line interface, making building unikernels and MicroVM as easy as building containers.
UniK is built to be easily extensible, allowing (and encouraging) adding support for unikernel/MicroVM [compilers]!(docs/compilers/README.md) and cloud [providers]!(docs/providers/README.md). See [architecture]!(docs/architecture.md) for a better understanding of UniK’s pluggable code design.
To learn more about the motivation behind project UniK, read our blog post, or watch session (Slides).
We also encourage you to read this blog about IoT Security.
To stay up-to-date on UniK, follow us at twitter and join us on our slack channel.
Changelog:
Section titled “Changelog:”Due to the frequency with which features and patches are applied to UniK, we have decided to list these changes by date in our [unversioned changelog]!(docs/changelog.md).
Documentation
Section titled “Documentation”- Installation
- [Install UniK]!(docs/install.md)
- [Configuring the daemon]!(docs/configure.md)
- [Launching the InstanceListener]!(docs/instance_listener.md)
- Getting Started
- [Pull and run a unikernel without building]!(docs/getting_started_pull.md) on Virtualbox with UniK
- [Run your first Go MicroVM]!(docs/compilers/firecracker.md) on Firecracker with Unik
- [Run your first Go unikernel]!(docs/getting_started.md) on Virtualbox with UniK
- [Run your first Node.js unikernel]!(docs/getting_started_node.md) on Virtualbox with UniK
- [Run your first Python3 unikernel]!(docs/getting_started_python3.md) on Virtualbox with UniK
- [Run your first Java unikernel]!(docs/getting_started_java.md) on Virtualbox with UniK
- [Run your first C++ unikernel]!(docs/getting_started_cpp.md) on Virtualbox with UniK
- User Documenation
- Using the [command line interface]!(docs/cli.md)
- Compiling [Node.js]!(docs/compilers/rump.md#nodejs) Applications to Unikernels
- Compiling [Go]!(docs/compilers/rump.md#golang) Applications to Unikernels
- Compiling [Java]!(docs/compilers/osv.md#java) Applications to Unikernels (OSv)
- Compiling [Node.js]!(docs/compilers/osv.md#nodejs) Applications to Unikernels (OSv)
- Compiling [C/C++]!(docs/compilers/osv.md#native) Applications to Unikernels (OSv)
- Compiling [C/C++]!(docs/compilers/includeos.md) Applications to Unikernels
- Compiling [Python3]!(docs/compilers/rump.md#python-3) Applications to Unikernels
- Developer Documentation
- Adding [compiler]!(docs/compilers/README.md) support
- Adding [provider]!(docs/providers/README.md) support
Supported unikernel types:
Section titled “Supported unikernel types:”- Firecracker: UniK supports compiling GO code into Firecracker MicroVMs
- rump: UniK supports compiling [Python]!(docs/compilers/rump.md#python-3), [Node.js]!(docs/compilers/rump.md#nodejs) and [Go]!(docs/compilers/rump.md#golang) code into [rumprun]!(docs/compilers/rump.md) unikernels
- OSv: UniK supports compiling Java, Node.js, C and C++ code into OSv unikernels
- IncludeOS: UniK supports compiling C++ code into IncludeOS unikernels
- MirageOS: UniK supports compiling [OCaml]!(docs/compilers/mirage.md), code into MirageOS unikernels
We are looking for community help to add support for more unikernel types and languages.
Supported providers:
Section titled “Supported providers:”- Firecracker
- [Virtualbox]!(docs/providers/virtualbox.md)
- [AWS]!(docs/providers/aws.md)
- [Google Cloud]!(docs/providers/gcloud.md)
- [vSphere]!(docs/providers/vsphere.md)
- [QEMU]!(docs/providers/qemu.md)
- [UKVM]!(docs/providers/ukvm.md)
- [Xen]!(docs/providers/xen.md)
- [OpenStack]!(docs/providers/openstack.md)
- [Photon Controller]!(docs/providers/photon.md)
Roadmap:
Section titled “Roadmap:”- extend unik to build & deploy Kata Containers
- extend unik to build & deploy FreeRTOS
- extend unik to build & deploy LinuxKit
- dynamic volume and application arguments configuration at instance runtime (rather than at compile time)
- expanding test coverage
- better code documentation
- multi-account support per provider (i.e. multiple AWS accounts/regions, etc.)
- migrate from martini to echo
UniK is still experimental! APIs and compatibility are subject to change. We are looking for community support to help identify potential bugs and compatibility issues. Please open a Github issue for any problems you may experience, and join us on our slack channel
Thanks
Section titled “Thanks”UniK would not be possible without the valuable open-source work of projects in the unikernel community. We would like to extend a special thank-you to Firecracker, rumprun, deferpanic, cloudius systems, mirageos and includeOS.