{"id":13508374,"url":"https://github.com/nanovms/nanos","last_synced_at":"2026-01-14T23:09:53.774Z","repository":{"id":37700057,"uuid":"115159616","full_name":"nanovms/nanos","owner":"nanovms","description":"A kernel designed to run one and only one application in a virtualized environment","archived":false,"fork":false,"pushed_at":"2026-01-10T15:12:12.000Z","size":10525,"stargazers_count":3038,"open_issues_count":77,"forks_count":159,"subscribers_count":41,"default_branch":"master","last_synced_at":"2026-01-11T04:25:58.677Z","etag":null,"topics":["edge","microservice","operating-systems","osdev","sandbox","security","unikernel","unikernels","virtualization"],"latest_commit_sha":null,"homepage":"https://nanos.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nanovms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-12-23T00:25:34.000Z","updated_at":"2026-01-10T15:11:58.000Z","dependencies_parsed_at":"2023-09-22T07:53:09.991Z","dependency_job_id":"9e09dd6b-8453-4734-bf5b-550e0510e119","html_url":"https://github.com/nanovms/nanos","commit_stats":null,"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/nanovms/nanos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanovms%2Fnanos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanovms%2Fnanos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanovms%2Fnanos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanovms%2Fnanos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nanovms","download_url":"https://codeload.github.com/nanovms/nanos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanovms%2Fnanos/sbom","scorecard":{"id":674128,"data":{"date":"2025-08-11","repo":{"name":"github.com/nanovms/nanos","commit":"f54e6aafca8c26aff7ab0027db601c95e3532802"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"11 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":3,"reason":"Found 3/9 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/nanovms/nanos/main.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T21:00:45.548Z","repository_id":37700057,"created_at":"2025-08-21T21:00:45.548Z","updated_at":"2025-08-21T21:00:45.548Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28437930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edge","microservice","operating-systems","osdev","sandbox","security","unikernel","unikernels","virtualization"],"created_at":"2024-08-01T02:00:52.188Z","updated_at":"2026-01-14T23:09:53.726Z","avatar_url":"https://github.com/nanovms.png","language":"C","funding_links":[],"categories":["C","Open Source Operating Systems","security","Projects"],"sub_categories":["Linux Binary Compatible"],"readme":"# nanos\n\n[![CircleCI](https://circleci.com/gh/nanovms/nanos.svg?style=svg)](https://circleci.com/gh/nanovms/nanos)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://repository-images.githubusercontent.com/115159616/44eb1980-a6f4-11e9-9e7b-df7adf662967\" style=\"width:200px;\"/\u003e\n\u003c/p\u003e\n\nNanos is a new kernel designed to run one and only one application in a\nvirtualized environment. It has several constraints on it compared to a\ngeneral purpose operating system such as Windows or Linux - namely it's\na single process system with no support for running multiple programs\nnor does it have the concept of users or remote administration via ssh.\n\nRead more about the Nanos Charter [here](CHARTER.md).\n\n1. [Getting Started](#getting-started)\n2. [Documentation](#documentation)\n3. [Support](#support)\n\n### Getting Started\n\nPlease use the [ops](https://ops.city) build tool to run your applications with Nanos unless you plan on hacking on Nanos itself.\nMany ready-to-use examples for running applications on Nanos using ops are available [here](https://github.com/nanovms/ops-examples).\n\n#### Quick Start\n\nInstall ops \u0026\u0026 nanos:\n\n```\ncurl https://ops.city/get.sh -sSfL | sh\n```\n\n![Demo](doc/demo.gif)\n\n### Building/Running\n\nIt is highly encouraged to use [ops](https://github.com/nanovms/ops) to build and run your applications using Nanos unless you are planning\non modifying Nanos. [ops](https://ops.city) provides sensible defaults for most users and\nincorporates our understanding of how to appropriately best use Nanos.\nIt is also currently highly coupled to Nanos.\n\nIf you are running in a vm already (which is a bad idea) you'll need to specify\nthat you don't want hardware acceleration. For instance you can run\nNanos in virtualbox on a mac but it will be slow and hard to configure.\n\nYou can build and run on mac and linux. Nanos supports KVM on linux and\nHVF on osx currently for acceleration. [ops](https://ops.city) has facilities to deploy to public clouds (AWS, GCE, Azure, and many others).\n\n#### Building From Source on a Mac\n\nNote: This is only recommended for those that wish to make code changes\nto Nanos itself.\n\nInstall Homebrew:\n```\n/usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\n```\n\nGrab Dependencies:\n\nThis installs the correct toolchain and will install an up-to-date qemu.\nIt is highly recommended to be running the latest qemu otherwise you\nmight run into issues.\n\nFor Intel-based Macs:\n```\nbrew update \u0026\u0026 brew install nasm go wget ent\nbrew tap nanovms/homebrew-toolchains\nbrew install x86_64-elf-binutils\nbrew tap nanovms/homebrew-qemu\nbrew install nanovms/homebrew-qemu/qemu\n```\n(note: ```go``` is only needed for certain [examples](#examples), but not for building the kernel)\n\nFor ARM-based Macs (M1/M2):\n\n```\nbrew update \u0026\u0026 brew install go wget ent qemu aarch64-elf-binutils\n```\n##### To build and link runtime tests or aarch64 linux user programs:\n```\nbrew tap nanovms/homebrew-toolchains\nbrew install aarch64-linux-binutils\n```\n\nCreate a Chroot:\n(this isn't absolutely necessary)\n\nFor Intel-based Macs:\n\n```\nmkdir target-root \u0026\u0026 cd target-root \u0026\u0026 wget\nhttps://storage.googleapis.com/testmisc/target-root.tar.gz \u0026\u0026 tar xzf target-root.tar.gz\n```\n\nFor ARM-based Macs (M1/M2):\n\n```\nmkdir target-root \u0026\u0026 cd target-root \u0026\u0026 wget\nhttps://storage.googleapis.com/testmisc/arm64-target-root-new.tar.gz \u0026\u0026 tar xzf arm64-target-root-new.tar.gz\n```\n\nYou should also set the environment variable NANOS_TARGET_ROOT to the path of \ntarget-root created above in order to create the example and test images.\n\n#### Building From Source on Linux\n\nNote: This is only recommended for those that wish to make code changes to Nanos itself.\n\nNanos doesn't need too many dependencies on Linux.\n\nTo build you need to install nasm, qemu and go:\n\n```\nsudo apt-get install qemu-system-x86 nasm golang-go\n```\n(note: ```go``` is only needed for certain [examples](#examples), but not for building the kernel)\n\nFor tests you'll also need the following installed:\n\n```\nsudo apt-get install ent ruby\n```\n\nOps:\n```\ncurl https://ops.city/get.sh -sSfL | sh\n```\n\nRust:\n```\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\nIf you wish to use FUSE you'll also want to install\n\n```\nsudo apt-get install libfuse-dev fuse\n```\n\n#### To build the kernel (in addition to the bootloaders and klibs):\n```\nmake kernel\n```\n\n#### Examples\n\n\nTo run an example program from the test/runtime folder:\n\nWith hardware acceleration:\n\n```\nmake run\n```\nWithout hardware acceleration:\n\n```\nmake run-noaccel\n```\n\nSet ```TARGET``` to run a specific example:\n```\nmake TARGET=\u003cexample\u003e run\n```\n\nCheck out [test/runtime](test/runtime/README.md) for a list of examples. Certain examples require ```go``` to be built. \n\nMore examples can be found in [docs/examples#examples](https://docs.ops.city/ops/examples#examples).\n\n### Documentation\n\nYou can find more documentation on the ops [docs site](https://nanovms.gitbook.io/ops/)\n\n### Benchmarks\n\nIn an effort for transparency and to collect, categorize, and document\nbenchmarks we will start listing them here. The aims should be to be as\nreproducible and contain as much information as possible:\n\n[Go on GCloud](https://github.com/nanovms/nanos/wiki/go_gcloud): 18k req/sec\n\n[Rust on GCloud](https://github.com/nanovms/nanos/wiki/rust_gcloud): 22k req/sec\n\n[Node.JS on AWS](https://github.com/nanovms/nanos/wiki/nodejs_aws): 2k req/sec\n\n[Node.JS on GCloud](https://github.com/nanovms/nanos/wiki/nodejs_gcloud): 4k req/sec\n\n### Tests\n\nTo run tests:\n```\nmake test-noaccel\n```\n\n### Development Running Instructions\n\nFor Nanos try running the first example first:\n```\nmake run\n```\n\nTo try a different target currently found in test/runtime/ you can:\n\n1) cp the manifest file to target.manifest\n2) add your code and set a target in test/runtime/Makefile\n\n```\nmake TARGET=mynewtarget run\n```\n\nYou may also wish to use [ops](https://github.com/nanovms/ops) to\ndevelop locally. If that's the case a commonly used idiom is to simply\ncopy the 2 required files to an appropriate release:\n\n```\ncp output/platform/pc/boot/boot.img ~/.ops/0.1.52/.\ncp output/platform/pc/bin/kernel.img ~/.ops/0.1.52/.\n```\n\nYou may also copy the klibs over if you wish to use any of those:\n\n```\ncp output/platform/pc/bin/!(test|*.dbg|kernel.*) ~/.ops/0.1.52/klibs/.\n```\n\n### Contributing\n\n#### Pull Requests\n\nWe accept pull requests as long as it conforms to our style and stated\ngoals. We may reject prs if they violate either of these conditions.\n\nIf you are planning on spending more than a day to fix something\nit's probably wise to approach the topic in an issue with your planned\nfix before commiting to work.\n\nAlso, NanoVMs has paid kernel engineers with internal roadmaps so it's\nwise to check in with us first before grabbing a tkt. Tickets tagged\n'low-priority' have a lower probability of collision.\n\n#### Reporting Bugs\n\nPlease scan the issue list first to see if we are already tracking the\nbug.\n\nPlease _do not_ create a new issue on a closed issue. If you think you are\nexperiencing the same problem (is the error message the same?) you can\nopen a new issue and link to it if you think it's the same.\n\nPlease try to provide the most basic reproducible example you can. If\nyou have an error message or dump please include that.\n\nPlease try using the latest/nightly build first before reporting.\n\nPlease attach debugging output (`--trace` in ops). Please provide the\nconfig.json and anything else that allows us to reproduce the issue.\n\n### TFS\n\nTFS is the current filesystem utilized by Nanos.\n\n### Optional Manifest Debugging Flags\n\nthread tracing:\n\n```\nfutex_trace: t\n```\n\nsyscall tracing:\n\n```\ndebugsyscalls: t\n```\n\nRead more about Security [here](SECURITY.md).\n\n[Architecture](https://github.com/nanovms/nanos/wiki/Architecture)\n\n[Debugging Help](https://github.com/nanovms/nanos/wiki/debugging)\n\n[Manual Networking Setup](https://github.com/nanovms/nanos/wiki/networking-setup)\n\n[Build Envs](https://github.com/nanovms/nanos/wiki/Build-Envs)\n\n[Reference Materials](https://github.com/nanovms/nanos/wiki/reference-materials)\n\n### Feedback\n\nHow are you using Nanos? Take this very short survey and help us grow\nthe project. It will take just a minute but help us out!\n\n[Feedback Form](https://ian377411.typeform.com/to/nm0soI)\n\n### Who is Using Nanos?\n\nIf you are using Nanos for a project at your company or organization\nfeel free to open up a PR and list your project/company below.\n\n### Getting Help\n\nIf you need help using nanos or ops the the [discussion forum](https://forums.nanovms.com/) is your best route for general questions. You may feel free to report a bug noting the bug reporting section ahead or open an issue for a feature request.\n\n# Support\n\nNote: Nanos is open source, Apache2, however the builds that NanoVMs\nprovides are not. Those using binary builds with over 50 employees must\nget a commercial subscription or you may freely build from source.\n\nSimilarily if you need something done *now* or want immediate attention to an issue\nNanoVMs offers [paid support plans](https://nanovms.com/services/subscription).\n\nIf you need email or drift support you will need to sign up for a support plan.\n\nIf you'd like more in-depth help reach out to the nanovms folks via drift or email engineering.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanovms%2Fnanos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnanovms%2Fnanos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanovms%2Fnanos/lists"}