UniK/Open Source Project

Build and run unikernels

A platform for automating unikernel compilation and deployment


UniK (pronounced you-neek) is a tool for compiling application sources into unikernels (lightweight bootable disk images) rather than binaries. UniK runs and manages instances of compiled images across a variety of cloud providers as well as locally on Virtualbox. UniK utilizes a simple docker-like command line interface, making building unikernels as easy as building containers. UniK is built to be easily extensible, allowing (and encouraging) adding support for unikernel compilers and cloud providers. See architecture 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 @ProjectUnik and join us on our slack channel.

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.

Documentation


Supported unikernel types:

  • rump: UniK supports compiling Python, Node.js and Go code into rumprun 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, code into MirageOS unikernels
We are looking for community help to add support for more unikernel types and languages.

Supported providers:

Roadmap:

  • 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

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 rumprun, deferpanic, cloudius systems, mirageos and includeOS.

Information

  • 1364 Stars
  • 107 Forks
  • 21 Contributors
  • Go
  • Tools and Libraries
  • From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog

    Build and run unikernels

    A platform for automating unikernel compilation and deployment


    UniK (pronounced you-neek) is a tool for compiling application sources into unikernels (lightweight bootable disk images) rather than binaries. UniK runs and manages instances of compiled images across a variety of cloud providers as well as locally on Virtualbox. UniK utilizes a simple docker-like command line interface, making building unikernels as easy as building containers. UniK is built to be easily extensible, allowing (and encouraging) adding support for unikernel compilers and cloud providers. See architecture 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 @ProjectUnik and join us on our slack channel.

    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.

    Documentation


    Supported unikernel types:

    • rump: UniK supports compiling Python, Node.js and Go code into rumprun 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, code into MirageOS unikernels
    We are looking for community help to add support for more unikernel types and languages.

    Supported providers:

    Roadmap:

    • 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

    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 rumprun, deferpanic, cloudius systems, mirageos and includeOS.

    From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog

    From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog