Project: Daytona (App Definition and Development / Application Definition & Image Build)
File: README.md

<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/daytonaio/daytona/raw/main/assets/images/Daytona-logotype-white.png"> <img alt="Daytona logo" src="https://github.com/daytonaio/daytona/raw/main/assets/images/Daytona-logotype-black.png" width="40%"> </picture> </div> <br><br> <div align="center"> ](#license) ](https://goreportcard.com/report/github.com/daytonaio/daytona) ](https://github.com/daytonaio/daytona/issues) ](https://console.algora.io/org/daytonaio/bounties?status=open) ](https://console.algora.io/org/daytonaio/bounties?status=completed) <br> <a href="https://www.producthunt.com/posts/daytona?utmsource=badge-top-post-badge&utmmedium=badge&utmsouce=badge-daytona" target="blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=445392&theme=light&period=daily" alt="Daytona - Dev&#0032;environment&#0032;manager&#0032;that&#0032;makes&#0032;you&#0032;2x&#0032;more&#0032;productive | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> <a href="https://www.producthunt.com/posts/daytona?utmsource=badge-top-post-topic-badge&utmmedium=badge&utmsouce=badge-daytona" target="blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-topic-badge.svg?postid=445392&theme=light&period=weekly&topicid=267" alt="Daytona - Dev&#0032;environment&#0032;manager&#0032;that&#0032;makes&#0032;you&#0032;2x&#0032;more&#0032;productive | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a> </div> <h1 align="center">The Open Source Development Environment Manager</h1> <div align="center"> Set up a development environment on any infrastructure, with a single command. </div> </br> <p align="center"> <a href="https://github.com/daytonaio/daytona/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%F0%9F%90%9B+Bug+Report%3A+">Report Bug</a> <a href="https://github.com/daytonaio/daytona/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%F0%9F%9A%80+Feature%3A+">Request Feature</a> <a href="https://join.slack.com/t/daytonacommunity/shared_invite/zt-273yohksh-Q5YSB5V7tnQzX2RoTARr7Q">Join Our Slack</a> <a href="https://twitter.com/daytonaio">Twitter</a> </p> <div align="center"><img src="https://github.com/daytonaio/daytona/raw/main/assets/images/daytona_demo.gif" width="50%" ></div> Single Command: Activate a fully configured development environment with a single command. Runs everywhere: spin up your development environment on any machine whether it's local, remote, cloud-based, physical server, or a VM & any architecture x86 or ARM. Configuration File Support: Initially support for , ability to expand to DevFile, Nix & Flox (Contributions welcome here!). Prebuilds System: Drastically improve environment setup times (Contributions welcome here!). IDE Support : Seamlessly supports & locally, ready to use without configuration. Includes a built-in Web IDE for added convenience. Git Provider Integration: GitHub, GitLab, Bitbucket & Gitea can be connected, allowing easy repo branch or PR pull and commit back from the workspaces. Multiple Project Workspace: Support for multiple project repositories in the same workspace, making it easy to develop using a micro-service architecture. Reverse Proxy Integration: Enable collaboration and streamline feedback loops by leveraging reverse proxy functionality. Access preview ports and the Web IDE seamlessly, even behind firewalls. Extensibility: Enable extensibility with plugin or provider development. Moreover, in any dynamic language, not just Go(Contributions welcome here!). Security: Automatically creates a VPN connection between the client machine and the development environment, ensuring a fully secure connection. All Ports: The VPN connection enables access to all ports on the development environments, removing the need to setup port forwards over SSH connection. Works on my Machine: Never experience it again. ```bash (curl -sf -L https://download.daytona.io/daytona/install.sh | sudo bash) && daytona server -y && daytona ``` <details> <summary>Windows PowerShell</summary> This command downloads and installs Daytona and runs the Daytona Server: ```pwsh $architecture = if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") { "amd64" } else { "arm64" } md -Force "$Env:APPDATA\bin\daytona"; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'; Invoke-WebRequest -URI "https://download.daytona.io/daytona/latest/daytona-windows-$architecture.exe" -OutFile "$Env:APPDATA\bin\daytona\daytona.exe"; $env:Path += ";" + $Env:APPDATA + "\bin\daytona"; [Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User); daytona serve; ``` </details> ```bash daytona create --code ``` Start coding. </br> Daytona is a radically simple open source development environment manager. Setting up development environments has become increasingly challenging over time, especially when aiming to set up remotely, where the complexity increases by an order of magnitude. The process is so complex that we've compiled a detailing all the necessary steps to set one upspanning 5,000 words, 7 steps, and requiring anywhere from 15 to 45 minutes. This complexity is unnecessary. With Daytona, you need only to execute a single command: `daytona create --code`. Daytona automates the entire process; provisioning the instance, interpreting and applying the configuration, setting up prebuilds, establishing a secure VPN connection, securely connecting your local or a Web IDE, and assigning a fully qualified domain name to the development environment for easy sharing and

As a developer, you can immediately start focusing on what matters mostyour code. We spent most of our careers building cloud development environments. In 2009, we launched what was likely the first commercial project. At that time, technology was lacking, forcing us to develop everything from scratchthe IDE, the environment orchestrator, and almost everything else. A lot of people were interested, and over 2.5 million developers signed up! But we were too early, and we asked too much from our users to change how they worked. Now, 15 years since its inception, we have noticed quite a few things. First, the technology we wished for back then exists now. Second, approximately 50% of developers work in remote dev environments, and third, and most importantly, setting up development environments has become more complex than ever, both locally and to a greater magnitude for remote. So, we took everything we learned and decided to solve these issues once and for all as a fully open-source project. Our goal was to create a single binary that allows you to set up a development environment anywhere you wish, completely free, and finally fulfill the promise that many have attempted to make. Before starting the installation script, please go over all the necessary requirements: Hardware Resources: Depending on the project requirements, ensure your machine has sufficient resources. Minimum hardware specification is 1cpu, 2GB of RAM and 10GB of disk space. Docker: Ensure is installed and running. Daytona allows you to manage your Development Environments using the Daytona CLI. To install it, please execute the following command: ```bash curl -sf -L https://download.daytona.io/daytona/install.sh | sudo bash ``` <details open> <summary> Manual installation </summary> If you don't want to use the provided script, download the binary directly from the URL for your specific OS: ```bash curl -sf -L https://download.daytona.io/daytona/latest/daytona-darwin-amd64 -o daytona curl -sf -L https://download.daytona.io/daytona/latest/daytona-darwin-arm64 -o daytona curl -sf -L https://download.daytona.io/daytona/latest/daytona-linux-amd64 -o daytona curl -sf -L https://download.daytona.io/daytona/latest/daytona-linux-arm64 -o daytona curl -sf -L https://download.daytona.io/daytona/latest/daytona-windows-amd64.exe -o daytona curl -sf -L https://download.daytona.io/daytona/latest/daytona-windows-arm64.exe -o daytona ``` Make sure that path where `daytona` binary is downloaded is in your system PATH. </details> To initialize Daytona, follow these steps: Start the Daytona Server: This initiates the Daytona Server in daemon mode. Use the command: ```bash daytona server ``` Add Your Git Provider of Choice: Daytona supports GitHub, GitLab, Bitbucket and Gitea. To add them to your profile, use the command: ```bash daytona git-providers add ``` Follow the steps provided. Add Your Provider Target: This step is for choosing where to deploy Development Environments. By default, Daytona includes a Docker provider to spin up environments on your local machine. For remote development environments, use the command: ```bash daytona target set ``` Following the steps this command adds SSH machines to your targets. Choose Your Default IDE: The default setting for Daytona is VS Code locally. If you prefer, you can switch to VS Code - Browser or any IDE from the JetBrains portfolio using the command: ```bash daytona ide ``` Now that you have installed and initialized Daytona, you can proceed to setting up your development environments and start coding

Creating development environments with Daytona is a straightforward process, accomplished with just one command: ```bash daytona create --code ``` You can skip the `--code` flag if you don't wish to open the IDE immediately after creating the environment. Upon executing this command, you will be prompted with two questions: Choose the provider to decide where to create a dev environment. Select or type the Git repository you wish to use to create a dev environment. After making your selections, press enter, and Daytona will handle the rest. All that remains for you to do is to execute the following command to open your default IDE: ```bash daytona code ``` This command opens your development environment in your preferred IDE, allowing you to start coding instantly. ```bash daytona server stop ``` ```bash daytona server restart ``` Daytona offers flexibility for extension through the creation of plugins and providers. Daytona is designed to be infrastructure-agnostic, capable of creating and managing development environments across various platforms. Providers are the components that encapsulate the logic for provisioning compute resources on a specific target platform. They allow for the configuration of different targets within a single provider, enabling, for instance, multiple AWS profiles within an AWS provider. How does it work? When executing the `daytona create --code` command, Daytona communicates the environment details to the selected provider, which then provisions the necessary compute resources. Once provisioned, Daytona sets up the environment on these resources, allowing the user to interact with the environment seamlessly. Providers are independent projects that adhere to the Daytona Provider interface. They can be developed in nearly any major programming language. More details coming soon. Plugins enhance Daytona's core functionalities by adding new CLI commands, API methods, or services within the development environments. They offer configurable settings to tailor the plugin's behavior to the user's needs. Similar to providers, plugins are independent projects that conform to the Daytona Plugin interface and can be developed in a wide range of programming languages. More details coming soon. Daytona is Open Source under the , and is the . If you would like to contribute to the software, you must: Read the Developer Certificate of Origin Version 1.1 (https://developercertificate.org/) Signing all commits to the Daytona project. This ensures that users, distributors, and other contributors can rely on all the software related to Daytona being contributed under the terms of the . No contributions will be accepted without following this process. Afterwards, navigate to the to get started. This repository contains Daytona, covered under the , except where noted (any Daytona logos or trademarks are not covered under the Apache License, and should be explicitly noted by a LICENSE file.) Daytona is a product produced from this open source software, exclusively by Daytona Platforms, Inc. It is distributed under our commercial terms. Others are allowed to make their own distribution of the software, but they cannot use any of the Daytona trademarks, cloud services, etc. We explicitly grant permission for you to make a build that includes our trademarks while developing Daytona itself. You may not publish or share the build, and you may not use that build to run Daytona for any other purpose. This project has adapted the Code of Conduct from the . For more information see the or contact with any additional questions or comments. For more information on how to use and develop Daytona, talk to us on .