{"id":21270722,"url":"https://github.com/explodingcamera/nots","last_synced_at":"2025-07-11T05:32:19.348Z","repository":{"id":203094860,"uuid":"708782816","full_name":"explodingcamera/nots","owner":"explodingcamera","description":"Your own open-source, self-hosted Cloud Platform ","archived":false,"fork":false,"pushed_at":"2024-05-21T22:07:11.000Z","size":702,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-21T23:23:33.016Z","etag":null,"topics":["cloud","containers","docker","edge-computing","faas","functions-as-a-service","paas","rust","self-hosted","serverless","serverless-functions"],"latest_commit_sha":null,"homepage":"https://nots.dev","language":"Rust","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/explodingcamera.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-23T11:38:49.000Z","updated_at":"2024-05-21T23:23:36.103Z","dependencies_parsed_at":null,"dependency_job_id":"b91ad109-2619-417b-be3b-db3edd12de0c","html_url":"https://github.com/explodingcamera/nots","commit_stats":{"total_commits":141,"total_committers":2,"mean_commits":70.5,"dds":"0.014184397163120588","last_synced_commit":"47fe792203f7ed49787b5908dfe799b840eae960"},"previous_names":["explodingcamera/nots"],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explodingcamera%2Fnots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explodingcamera%2Fnots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explodingcamera%2Fnots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/explodingcamera%2Fnots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/explodingcamera","download_url":"https://codeload.github.com/explodingcamera/nots/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225694188,"owners_count":17509314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cloud","containers","docker","edge-computing","faas","functions-as-a-service","paas","rust","self-hosted","serverless","serverless-functions"],"created_at":"2024-11-21T08:18:26.440Z","updated_at":"2024-11-21T08:18:26.876Z","avatar_url":"https://github.com/explodingcamera.png","language":"Rust","readme":"\u003cimg src=\"./nots.jpg\" /\u003e\n\u003cp align=\"center\"\u003e\n  \u003cbr/\u003e\n    \u003ca href=\"https://nots.dev\"\u003eNots\u003c/a\u003e is a self-hosted cloud platform —\n    \u003cbr/\u003e\n    Just bring your code, and Nots will take care of the rest.\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003e [!WARNING]  \n\u003e Nots is currently in development. The CLI is available for testing, but most features are not yet implemented. See the [roadmap](./ROADMAP.md) for more information.\n\nWith **Nots**, you can transform any server into a powerful, scalable, and secure cloud platform. It's a self-hosted alternative to serverless and edge platforms like AWS Lambda, Google Cloud Functions, Vercel, and Cloudflare Workers. You bring your code, and `nots` deploys it using the best-suited runtime — be it Bun, Docker, or a standalone binary.\nThe focus is on simplicity: You provide an artifact, and `nots` takes care of the rest. Unlike other platforms, `nots` doesn't require you to build a new Docker image for every app version, and it doesn't force you to use a specific language or framework. Additionally, it manages your secrets and environment variables, keeping them secure. Plus, it smartly routes traffic to your apps.\n\nAll of this without any \"magic\" - no special runtime or framework is required to run your apps.\n \n## 📖 Table of Contents\n\n- [📖 Table of Contents](#-table-of-contents)\n- [🛠 Installation](#-installation)\n- [🚀 Getting Started](#-getting-started)\n  - [Installing the Server Daemon](#installing-the-server-daemon)\n  - [📡 Connecting to the Server Daemon](#-connecting-to-the-server-daemon)\n  - [💻 Creating an App](#-creating-an-app)\n  - [📦 Deploying an Artifact](#-deploying-an-artifact)\n  - [📈 Scaling your Servers](#-scaling-your-servers)\n  - [❄️ Cold Boots/Hot Boots](#️-cold-bootshot-boots)\n- [🏗 Supported Runtimes](#-supported-runtimes)\n- [📝 Roadmap](#-roadmap)\n- [📄 License](#-license)\n\n## 🛠 Installation\n\u003cpre\u003e\u003ccode\u003e$ \u003cb\u003ecurl\u003c/b\u003e -fsSLO https://nots.dev/install.sh\n$ \u003cb\u003echmod\u003c/b\u003e +x install.sh \u0026\u0026 ./install.sh\n\u003c/code\u003e\u003c/pre\u003e\n\nThe `nots` CLI is the primary way to interact with the `nots` platform. It's a single binary that you can use to deploy, manage, and monitor your apps. it is available for Linux, macOS, and Windows.\n\nBefore installing, make sure you have [Docker](https://docs.docker.com/get-docker/) installed on your machine, as it's currently the only backend supported by `nots` (Firecracker based runtimes are coming soon).\n\nAlternatively, you can download the latest binary from the [releases page](https://github.com/explodingcamera/nots/releases). The installation script just downloads the latest binary and places it in `~/.local/bin` (You can als read the script before running it to make sure it's safe).\n\n## 🚀 Getting Started\n\n### Installing the Server Daemon\n\nEvery `nots` installation requires a server daemon. It's a small binary that runs on your server and manages your apps. You can install it by running the following command:\n\n\u003cpre\u003e\u003ccode\u003e$ \u003cb\u003enots server init\u003c/b\u003e\u003c/code\u003e\u003c/pre\u003e\n\nThis will guide you through the installation process. You can also use the `--help` flag to see all available options.\n\n### 📡 Connecting to the Server Daemon\n\n\nThe `nots` CLI automatically connects to the server daemon running on your machine. Remote connections are not yet supported, but they're coming soon.\n\n\u003c!-- If you want to connect to a remote server, set the `NOTS_SERVER` environment variable to the server's address. For example:\n\n\u003cpre\u003e\u003ccode\u003e$ \u003cb\u003eexport NOTS_SERVER=ssh://user@server\u003c/b\u003e\u003c/code\u003e\u003c/pre\u003e --\u003e\n\n### 💻 Creating an App\n\n\u003e [!WARNING]\n\u003e This feature is not yet implemented.\n\nApps are the primary unit of deployment in `nots`. By default, all apps are in the same, global namespace, but you will soon be able to organize them into different projects, like a separate namespace for your personal projects and another one for your company's apps.\n\nYou can create a new app by running the following command:\n\n\u003cpre\u003e\u003ccode\u003e$ \u003cb\u003enots app create\u003c/b\u003e\u003c/code\u003e\u003c/pre\u003e\n\n### 📦 Deploying an Artifact\n\n\u003e [!WARNING]\n\u003e This feature is not yet implemented.\n\nOnce you've created an app, you can deploy an artifact to it. An artifact is a binary or any archive that contains your app's code. You can deploy an artifact by running the following command:\n\n\u003cpre\u003e\u003ccode\u003e$ \u003cb\u003enots deploy --app=example-app ./index.ts\u003c/b\u003e    \u003ci\u003e# Single Files\u003c/i\u003e\n$ \u003cb\u003enots deploy --app=example-app ./app.tar.gz\u003c/b\u003e  \u003ci\u003e# Archives\u003c/i\u003e\n$ \u003cb\u003enots deploy --app=example-app ./dist\u003c/b\u003e        \u003ci\u003e# Directories\u003c/i\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\n### 📈 Scaling your Servers\n\n\u003e [!WARNING]\n\u003e This feature is not yet implemented.\n\nCurrently, `nots` only supports a single server, but you will soon be able to scale your apps across multiple servers and even multiple regions. Nots however will not balance requests between servers - load balancing can be done on the DNS level, or you can use CDN providers like Cloudflare to route traffic to the closest server. Simplicity is key - most projects will never need a complex load balancing setup and simple and efficient code can handle a lot more traffic than you might think.\n\n### ❄️ Cold Boots/Hot Boots\n\nBy default, `nots` keeps your apps running indefinitely. However, you will soon be able to configure it to shut down your apps after a certain period of inactivity. This is useful for apps that are only used occasionally, like small side projects. The time it takes to boot up an app is heavily dependent on the runtime. For example, a Rust binary takes a few milliseconds to start, while a Node.js app can take up to a few seconds.\nTo reduce this for slow runtimes, `nots` will also support hot boots using cgroup freezer. This will allow you to keep your apps running indefinitely while saving cpu resources when they're not in use.\n\n## 🏗 Supported Runtimes\n\n`nots` supports essentially any programming language or framework.\nWe provide a set of official runtimes, but you can use any OCI image as a runtime.\nNots just creates a VM or container for a given OCI image, and then runs your app inside it (and provides some additional features like automatic routing, secrets, and more).\n\nOfficial runtimes (optimized for performance and security):\n- [Bun](https://github.com/nots-dev/runtimes#bun) \n- [Node.js](https://github.com/nots-dev/runtimes#node)\n- [Deno](https://github.com/nots-dev/runtimes#deno)\n- [Binary](https://github.com/nots-dev/runtimes) - any standalone binary\n- Docker (you don't even need a 'runtime' for this, runtimes are just OCI images)\n\nA NotsTs runtime based on Bun is also in the works, which will offer a [WinterCG](https://wintercg.org/) based runtime for TypeScript and JavaScript.\n\nYou can also create your own runtime based on the existing ones. Check out the [runtimes](https://github.com/nots-dev/runtimes) repository for more information.\n\n## 📝 Roadmap\n\nThe current roadmap is available [here](./ROADMAP.md).\n\n\u003c!-- ## 📚 Documentation\n\n* CLI\n* Continuous Deployment\n* App Configuration\n  * Secrets\n  * Environment Variables\n\n## 📖 Cookbook\n\n* [JavaScript/TypeScript](https://nots.dev/cookbook/js)\n  * [Next.js](https://nots.dev/cookbook/js/nextjs)\n  * [Express](https://nots.dev/cookbook/js/express)\n  * [Hono](https://nots.dev/cookbook/hono)\n* [Rust](https://nots.dev/cookbook/rust)\n* [Go](https://nots.dev/cookbook/go) --\u003e\n\n## 📄 License\n\nNots is licensed under the terms of both the MIT License and the Apache License (Version 2.0).\nSee [LICENSE-APACHE](./LICENSE-APACHE) and [LICENSE-MIT](./LICENSE-MIT) for details.\nAny contribution intentionally submitted for inclusion in Nots shall be dual licensed as above without any additional terms or conditions.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexplodingcamera%2Fnots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexplodingcamera%2Fnots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexplodingcamera%2Fnots/lists"}