All Projects → smorimoto → rekernel

smorimoto / rekernel

Licence: Apache-2.0 license
A minimal setup for writing Unikernels in ReasonML

Programming Languages

Makefile
30231 projects
reason
219 projects

Projects that are alternatives of or similar to rekernel

arp
Address resolution protocol (ARP) implementation in OCaml targeting MirageOS
Stars: ✭ 20 (-28.57%)
Mutual labels:  mirageos, unikernel
ocaml-dns
OCaml implementation of the DNS protocol
Stars: ✭ 93 (+232.14%)
Mutual labels:  mirageos, unikernel
keyfender
Secure HSM implementation based on MirageOS
Stars: ✭ 33 (+17.86%)
Mutual labels:  mirageos, unikernel
docteur
An opiniated file-system for MirageOS
Stars: ✭ 16 (-42.86%)
Mutual labels:  mirageos, unikernel
Mirage
MirageOS is a library operating system that constructs unikernels
Stars: ✭ 1,707 (+5996.43%)
Mutual labels:  mirageos, unikernel
awesome-unikernels
A list about Unikernels
Stars: ✭ 86 (+207.14%)
Mutual labels:  mirageos, unikernel
contruno
A TLS termination proxy as a MirageOS
Stars: ✭ 13 (-53.57%)
Mutual labels:  mirageos, unikernel
mirage-xmpp
Implementation of XMPP for MirageOS
Stars: ✭ 12 (-57.14%)
Mutual labels:  mirageos, unikernel
bs-axios
Bucklescript bindings for axios
Stars: ✭ 74 (+164.29%)
Mutual labels:  reasonml
rembrandt
Simple UI framework written in Reasonml.
Stars: ✭ 81 (+189.29%)
Mutual labels:  reasonml
capstan
Capstan, a tool for packaging and running your application on OSv.
Stars: ✭ 19 (-32.14%)
Mutual labels:  unikernel
jsoo-react
js_of_ocaml bindings for ReactJS. Based on ReasonReact.
Stars: ✭ 126 (+350%)
Mutual labels:  reasonml
markdown-reason-react
Generate ReasonReact Pages from Markdown
Stars: ✭ 17 (-39.29%)
Mutual labels:  reasonml
bs-reason-apollo
ReactApollo bindings for BS
Stars: ✭ 23 (-17.86%)
Mutual labels:  reasonml
re-cite
Manage citations from your colleagues , friends, movies, your cat or even yourself.
Stars: ✭ 20 (-28.57%)
Mutual labels:  reasonml
tea-chess
A chess-themed tutorial on writing an SPA in Bucklescript-TEA
Stars: ✭ 28 (+0%)
Mutual labels:  reasonml
re-typescript
An opinionated attempt at finally solving typescript interop for ReasonML / OCaml.
Stars: ✭ 68 (+142.86%)
Mutual labels:  reasonml
bacen-exchange-rates
Reason API to fetch the daily reports from BACEN PTAX exchanges
Stars: ✭ 16 (-42.86%)
Mutual labels:  reasonml
re-hyperapp
Almost zero-cost bindings for the https://github.com/hyperapp/hyperapp UI library.
Stars: ✭ 21 (-25%)
Mutual labels:  reasonml
prometheus
OCaml library for reporting metrics to a Prometheus server
Stars: ✭ 44 (+57.14%)
Mutual labels:  mirageos

rekernel

PRs Welcome GitHub

Overview

A minimal setup for writing Unikernels in ReasonML.

What is Unikernel

If you aren't familiar with the concept of unikernels then there's a decent Wikipedia page on the subject to read. You are encouraged to read about them or watch some videos to learn more.

Unikernels are minimalist operating systems that consist only of your application and the libraries needed at runtime. One feature often needed for an application is the concept of files on disk. In a general-purpose OS, the filesystem and shell are always there underneath your application. If your application is 100% network-based and you don't need a file-system, then in a unikernel you wouldn't include the library for accessing files. This eliminates dead code that is often vulnerable and would otherwise be there waiting for hackers.

MirageOS is an OCaml unikernel development kit that targets many different platforms. Your code can be developed on a normal general-purpose desktop operating system. Applications built with MirageOS are very flexible and can be deployed on the cloud using KVM, Xen, or even static POSIX binaries. In the case of POSIX deployments, MirageOS stops being a unikernel. But this is a great feature in that we can test the application on our desktop and deploy it in disguise on Kubernetes.

MirageOS consists of a command line utility and a set of libraries that enables you to build a stand-alone OS. Once built, your application IS the whole operating system. The mirage command line utility allows you to configure your target deployment environment on the fly. You can decide where you would like to run your OS after you've written the code and tested it on your desktop.

There's very little attack surface on a unikernel. This is attractive. Firstly, your OS isn't "the droids you are looking for" when it comes to hackers. Secondly, there's no shell or extra services running in your OS. Even if a hacker could probe your application's services, they will likely not be able to gain elevated general privileges (E.G., root) on your OS.

For years, even during the peak of Bitcoin's price in 2017, there was a MirageOS Unikernel pinata running with 10 bitcoin inside. Even with nearly $200,000.00 USD hanging out there on the internet and a public challenge to steal them, nobody was able to do so. I think this is a great testament to the security aspects of unikernels. Nothing is foolproof but this is definitely a step in the right direction. - dysinger/restack

Note to anyone who happens to find this repository

I have confirmed that you can build on macOS, but I don't think you can probably build on another operating system without extra steps. This is a repository I created to explain to my friends who use macOS and I don't plan to provide much support. If you are a user of another operating system, you probably need to manually rewrite the dune config file. But, Mirage will support Dune soon, so these extra steps will no longer be necessary. And the code was stolen from Tim Dysinger's restack repository.

Build instructions

See the file BUILD.md for build instructions.

Bug reports and user feedback

Please report bugs using the issue tracker at https://github.com/imbsky/rekernel/issues.

License

Licensed under the Apache License, Version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].