Giter VIP home page Giter VIP logo

daytona's Introduction


Daytona logo

Documentation License Go Report Card Issues - daytona GitHub Release
Open Bounties Rewarded Bounties


Daytona - Dev environment manager that makes you 2x more productive | Product Hunt Daytona - Dev environment manager that makes you 2x more productive | Product Hunt

The Open Source Development Environment Manager

Set up a development environment on any infrastructure, with a single command.

Documentation · Report Bug · Request Feature · Join Our Slack · Twitter

Features

  • 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 dev container, ability to expand to DevFile, Nix & Flox (Contributions welcome here!).
  • Prebuilds System: Drastically improve environment setup times (Contributions welcome here!).
  • IDE Support : Seamlessly supports VS Code & JetBrains locally, ready to use without configuration. Includes a built-in Web IDE for added convenience.
  • Git Provider Integration: GitHub, GitLab, Bitbucket, Bitbucket Server, Gitea, Gitness, Azure DevOps & AWS CodeCommit 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.

Quick Start

Mac / Linux

curl -sfL https://download.daytona.io/daytona/install.sh | sudo bash && daytona server -y && daytona

Windows

Windows PowerShell This command downloads and installs Daytona and runs the Daytona Server:
$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;

Create your first dev environment by opening a new terminal, and running:

daytona create --code

Start coding.



Why Daytona?

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 comprehensive guide detailing all the necessary steps to set one up—spanning 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 collaboration.

As a developer, you can immediately start focusing on what matters most—your code.

Backstory

We spent most of our careers building cloud development environments. In 2009, we launched what was likely the first commercial Cloud IDE project. At that time, technology was lacking, forcing us to develop everything from scratch—the 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.

Getting Started

Requirements

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 Docker is installed and running.

Installing Daytona

Daytona allows you to manage your Development Environments using the Daytona CLI. To install it, please execute the following command:

# Install Daytona into /usr/local/bin
curl -sf -L https://download.daytona.io/daytona/install.sh | sudo bash

# OR if you want to install Daytona to some other path where you don`t need sudo
# curl -sf -L https://download.daytona.io/daytona/install.sh | DAYTONA_PATH=/home/user/bin bash
Manual installation If you don't want to use the provided script, download the binary directly from the URL for your specific OS:
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.

Initializing Daytona

To initialize Daytona, follow these steps:

1. Start the Daytona Server: This initiates the Daytona Server in daemon mode. Use the command:

daytona server

2. Add Your Git Provider of Choice: Daytona supports GitHub, GitLab, Bitbucket, Bitbucket Server, Gitea, Gitness, AWS CodeCommit and Azure DevOps. To add them to your profile, use the command:

daytona git-providers add

Follow the steps provided.

3. 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:

daytona target set

Following the steps this command adds SSH machines to your targets.

4. 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:

daytona ide

Now that you have installed and initialized Daytona, you can proceed to setting up your development environments and start coding instantly.

Creating Dev Environments

Creating development environments with Daytona is a straightforward process, accomplished with just one command:

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:

  1. Choose the provider to decide where to create a dev environment.
  2. 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:

daytona code

This command opens your development environment in your preferred IDE, allowing you to start coding instantly.

Stopping the Daytona Server:

daytona server stop

Restarting the Daytona Server:

daytona server restart

How to Extend Daytona

Daytona offers flexibility for extension through the creation of plugins and providers.

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

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.

Contributing

Daytona is Open Source under the Apache License 2.0, and is the copyright of its contributors. If you would like to contribute to the software, you must:

  1. Read the Developer Certificate of Origin Version 1.1 (https://developercertificate.org/)
  2. 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 License. No contributions will be accepted without following this process.

Afterwards, navigate to the contributing guide to get started.

License

This repository contains Daytona, covered under the Apache License 2.0, 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.

You can read more in our packinging guidelines.

Code of Conduct

This project has adapted the Code of Conduct from the Contributor Covenant. For more information see the Code of Conduct or contact [email protected]. with any additional questions or comments.

Questions

For more information on how to use and develop Daytona, talk to us on Slack.

daytona's People

Contributors

35c4n0r avatar abhishek818 avatar bryans-go avatar dependabot[bot] avatar ezhil56x avatar fabjanvucina avatar gdraganic avatar guptadeepak8 avatar harkiratsm avatar idagelic avatar ivan-burazin avatar jemiluv8 avatar joey1123455 avatar lbrecic avatar mattn avatar metcalfc avatar mobley-trent avatar neo773 avatar nkkko avatar rogueloop avatar rs-labhub avatar svendowideit avatar tarunrajput avatar the-johnwick avatar tpuljak avatar twacqwq avatar unsuman avatar vedranjukic avatar vineeth-vk11 avatar zzorica avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

daytona's Issues

Daytona list should return the branch

Is your feature request related to a problem? Please describe.
When running "daytona list" there should also be a column "BRANCH" which displays the branch of the relevant project currently stored in the database.

State seems to be held over after a delete

Describe the bug
I created a workspace with: daytona create test -r https://github.com/metcalfc/simple-astro It ran normally. I then deleted that workspace with daytona delete test. So far so good. After deleting the workspace I ran daytona create test -r https://github.com/metcalfc/simple-astro again.

The workspace never successfully launches.

❯ daytona create test -r https://github.com/metcalfc/simple-astro

WORKSPACE CREATION

  ┌─────────────────────────────────────────────────────────────────────────────────────────┐
  │                                                                                         │
  │  Creating project simple-astro                                                          │
  │  Project simple-astro created                                                           │
  │  Workspace creation completed                                                           │
  │  Starting workspace                                                                     │
  │  Starting project simple-astro                                                          │
  │  Establishing connection with the workspace                                             │
  │                                                                                         │
  └─────────────────────────────────────────────────────────────────────────────────────────┘
FATA[0190] Timeout: dialing timed out after 3 minutes

To Reproduce
Steps to reproduce the behavior:

  1. Create a workspace
  2. Delete the workspace
  3. Create a new workspace with the same name as the first

Expected behavior
I expected the first workspace to be deleted and the second workspace to start.

Screenshots

Desktop (please complete the following information):

  • OS: Mac 14.2.1
  • Browser: Chrome Version 122.0.6261.69
  • Daytona Version: Version 0.3.0

Additional context

I'm not sure what use the server log is. There doesn't seem to be any useful information in it.

Workspace ID as uuid

Is your feature request related to a problem? Please describe.

Workspace IDs should be UUIDs. Currently, they are equal to workspace names which can cause some issues when connecting to a project.

Title edit

in your terminal when you type "daytona" it outputs this title :
Daytona Server is a tool for managing development environments

Which should be changed to: Daytona is a Dev Environment Manager

daytona code doesn't work on Mac

Describe the bug
daytona code fails on Mac with the following error:

[20:45:58.324] Remote server is listening on port 37847
[20:45:58.324] Parsed server configuration: {"serverConfiguration":{"remoteListeningOn":{"port":37847},"osReleaseId":"ubuntu","arch":"aarch64","webUiAccessToken":"","sshAuthSock":"","display":"","tmpDir":"/tmp","platform":"linux","connectionToken":"111aa1a1-11a1-1111-a111-11111a111111"},"installUnpackCode":""}
[20:45:58.324] ** Note: Support for architecture "aarch64" is in preview **
[20:45:58.324] Persisting server connection details to /Users/metcalfc/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-2b764a70-019f4d1419fbc8219a181fab7892ebccf7ee29a2-0.109.0-tr/data.json
[20:45:58.327] Starting forwarding server. local port 50195 -> socksPort 50180 -> remotePort 37847
[20:45:58.327] Forwarding server listening on port 50195
[20:45:58.327] Waiting for ssh tunnel to be ready
[20:45:58.327] Tunneled port 37847 to local port 50195
[20:45:58.328] Resolved "ssh-remote+default-test-simple-astro" to "port 50195"
[20:45:58.328] [Forwarding server port 50195] Got connection 0
[20:45:58.329] Failed to set up socket for dynamic port forward to remote port 37847: connect ECONNREFUSED 127.0.0.1:50180. TCP port forwarding may be disabled, or the remote server may have crashed. See the VS Code Server log above for details.
[20:45:58.332] ------

[20:45:58.349] [Forwarding server port 50195] Got connection 1
[20:45:58.349] Failed to set up socket for dynamic port forward to remote port 37847: connect ECONNREFUSED 127.0.0.1:50180. TCP port forwarding may be disabled, or the remote server may have crashed. See the VS Code Server log above for details.

daytona ssh doesn't fail but it does give an warning:

daytona ssh
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:0Gmny1Ln1VTLXOgrJdxVgNu7mgZ6FyEiheHemOZtaas.
Please contact your system administrator.
Add correct host key in /Users/metcalfc/Library/Application to get rid of this message.
Offending RSA key in /Users/metcalfc/Library/Application:2
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.

~/Library/Application\ Support/daytona/.known_hosts is empty which is what the warning seems upset with.

If you change the entry in ~/.ssh/daytona_config to:

Host default-test-simple-astro
        User daytona
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null
        ProxyCommand /usr/local/bin/daytona ssh-proxy default test simple-astro

You can use the remote explorer in VS Code and successfully connect to the workspace. Also daytona ssh no longer gives a warning.

To Reproduce
Steps to reproduce the behavior:

  1. Create a workspace on Mac 14 using --skip-ide
  2. Run daytona code
  3. Wait for the connection to timeout with an error
  4. Run daytona ssh
  5. Wait for the connection to succeed but with an ugly warning
  6. Replace UserKnownHostsFile with /dev/null
  7. Profit

Expected behavior
I expect to be able to use VS Code remote ssh extension to get to a workspace and daytona ssh without a scary looking warning.

Screenshots
Internal recording: https://daytona-space.slack.com/archives/C06GAG0S4Q0/p1709700915680479

Desktop (please complete the following information):

  • OS: Mac 14
  • Daytona Version: vbobo-test

Additional context
NA

Remove remote installer

Is your feature request related to a problem? Please describe.
The remote installer pkg should be removed. It will later be added as a CLI plugin.

Releases

Currently missing Github Releases

Git Context Updating

Is your feature request related to a problem? Please describe.

We should add a component to the agent that will update the current git context in the API.

For example, when you check out a different branch in the project, that branch change would be reflected in our API.

Daytona command initial screen

The initial screen after typing the "daytona" command should show the following:

  1. Daytona logo in ascii
  2. Daytona title: Daytona; Your Dev Environment Manager
  3. Use the following commands to get started:
    a. daytona server - Start the Daytona Service
    b. daytona git-providers add - Add you Git provider of choice
    c. daytona providers add - Add you hosting provider for where you wish to spin up Dev Environments
    d. daytona ide - Choose the default IDE
    d. daytona whoami - Show information about the currently logged in user
  4. Usage:
    daytona [command]
  5. list of commands

Devcontainer support for web ide

Is your feature request related to a problem? Please describe.
Atm web ide does not have extension for working with devcontainer projects

Describe the solution you'd like
Web ide should have devcontainer extension preinstalled.

Workspace log file is not deleted along with workspace

Describe the bug

The workspace log file should be deleted along with the workspace.

Currently, if 2 workspaces with the same name-repo configuration are created, the log file will have already been populated and the creation log is polluted for the second one.

To Reproduce
Steps to reproduce the behavior:

  1. Create a workspace with the name wrk and any repo.
  2. Delete the workspace
  3. Repeat step 1 and observe the log already being populated

Expected behavior

The creation log starts from scratch in both cases.

Workspace Creation Logs

When creating a workspace there is no information on what is happening as a user.

Suggestion: add all any any logs as you can so the user has feedback as to what is happening

Public port preview short subdomain

Is your feature request related to a problem? Please describe.
Atm the public port forward generates the preview link as a combination of workspace-project-port-server_id subdomain.
This is inconvenient.

Describe the solution you'd like
It should be generated in a short form, for example
port-short_uid

No explanation given to why password prompt appears when running get-server.sh

Is your feature request related to a problem? Please describe.
It's not so much a problem as usability/trust issue 😄

So I run this as per installation instructions in readme:

curl https://download.daytona.io/daytona/get-server.sh | bash

then I get this...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1272  100  1272    0     0    498      0  0:00:02  0:00:02 --:--:--   498
Downloading server from https://download.daytona.io/daytona/latest/daytona-darwin-arm64
Password:

At this point I was confused to what the password is for so I hit Ctrl-C and then get

sudo: a password is required

So now I know you want my login password... but there's no explanation as to why? Being brainwashed by so many info-sec zealots, I decide too risky and so I Ctrl-C again... but I have to repeat several times to get back to the command line. Being a safe little developer, I check the readme for an explanation, but nothing there also. I abort it all having initially been quite excited to try out Daytona and pen this issue... sorry, I'd have rather added a contribution myself but I still have no idea if daytona will be something I need.

Describe the solution you'd like
The best alternative would be to avoid attempting to script anything that requires elevation. Change the installation path, make daytona per-user rather than trying to do something system wide. Runtime tools like mise and asdf do this well. I can't really comment on the solution because I haven't looked at the code, you peeps are the experts.

Describe alternatives you've considered
I guess worst case you could do something before prompting for sudo password like
"You are about to be prompted for your sudo password. This is required because ..."

Error response from daemon

FATA[0079] failed to create workspace: Error response from daemon: No such image: daytonaio/workspace-project:latest

In the documentation, what does faded text mean?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

When I go to
https://www.daytona.io/docs/installation/single-node/

I see

image

is there a specific significance to the text being faded such as Host minimum hardware specification?

Package managers

In addition to the easy but often hated curl | bash we should consider adding support for a Brew cask tap (Mac/Linux), Winget (Windows) and possibly Linux packages.

Project selection prompt

Is your feature request related to a problem? Please describe.
Currently when running e.g. "daytona code" or "daytona ssh" without arguments and instead using the prompting wizard - once you pick a workspace, the first project gets automatically selected. There should instead be another "SELECT A PROJECT" prompt for multi-project workspaces.
Doing this will make using the command line arguments not a requirement for selecting a non-primary project of a workspace.

Additional context
The project selection opens only for workspaces with more than one project. It should have the same Charm.sh design as the workspace selection prompt.

Extend 'daytona list' Output to Include Comprehensive Workspace Info

The output of the 'daytona list' command is currently lacking in detail, which limits the user's ability to quickly assess their workspaces' status and metrics. For example, the output could be expanded to provide a full repository link, timestamps for when the workspace was started and for how long it has been running, a flag indicating if it is created from a PR, and metrics on the resources consumed by each workspace.

Currently 'daytona list' just wreturns the name of the projects.

Preferably it should be implemented as rich TUI.

Buildx docker plugin missing

Describe the bug
In default project container image, buildx plugin is missing.

To Reproduce
Create a new workspace project and try to build an image using buildx.

Expected behavior
Buildx plugin should be preinstalled in the image.

Provider target select on workspace creation

Request

The user should always be presented with the provider target selection when creating a workspace if the flags are not defined.
The default target of the profile should be preselected.

Currently, the picker is not presented, instead the profile default is always used.

Project Label

The command 'ports' 'ssh' state "Manage forwarded project ports" and " SSH into a project using the terminal", should it not be "Workspace" instead of "project"?

Verbose workspace list flag

Is your feature request related to a problem? Please describe.

We should implement a flag for listing workspaces called --verbose (-v).

The command without the verbose flag should only display the basic workspace info, without asking the provisioner for workspace info.
The provisioner info should only be invoked in the verbose workspace list.

This will make the workspace list respond much faster and allow the user to choose if they want all the info displayed for a given workspace.

Discuss orphaned projects

We should discuss how we want to handle orphaned projects/workspaces.

Orhphaned projects/workspaces are those whose resources failed to create.

E.g. A docker container failed to initialize when creating a project.

We should define if we would want to abort the entire creation process and not save the workspace to the database, or, for example, if we leave it as is and just report the error to the user.

Port forward requires workspace name in agent mode

Describe the bug
When command is run inside the workspace it is not aware of workspace context.

To Reproduce

Ssh into a workspace and run
daytona ports forward -p 3000 --public

Error: accepts between 1 and 2 arg(s), received 0
Usage:
  daytona ports forward [WORKSPACE_NAME] [PROJECT_NAME] [flags]

Flags:
  -p, --port int   Port to forward
      --public     Should be port be available publicly via an URL

Global Flags:
      --help            help for daytona
  -o, --output string   Output format. Must be one of (yaml, json)

Expected behavior
The command should be aware of running inside the agent context and not require workspace (project) name

Automate Shell Completion Configuration for daytona to Enhance User Experience

Daytona provides a way to generate the shell completion script but requires users to integrate it into their shell environment manually. The user must capture the output, create a file in the appropriate directory, and then modify their shell's configuration file to source this script.

Suggested Enhancement

I propose enhancing the daytona CLI with functionality to automate the integration of shell completions. This enhancement could work as follows:

Automatic Detection and Configuration: Extend daytona with a command that not only generates the completion script but also detects the user's shell type and automatically places the script in the correct location.

Modification of Shell Configuration Files: For shells like Zsh, which may require the user to add a directory to their $fpath, the tool could either automatically update .zshrc or prompt the user with the specific line to add.

Immediate Activation: Provide an option to immediately source the new completion script or instruct the user to restart their shell session to activate the completions.

Considerations

The tool should respect user preferences and offer options rather than making changes without consent.
Implementing a cross-shell solution that accommodates the differences between Bash, Zsh, and possibly others.
Providing clear instructions and feedback during the process to ensure users understand what changes are being made.

List workspace hangs

Describe the bug
List workspace hangs with docker-provider workspace container unavailable

To Reproduce
Create a new workspace using docker-provider and manually delete the container.
Execute daytona ls

Expected behavior
Daytona should list all workspaces regardless of physical instance

Screenshots
Screenshot 2024-03-05 at 16 07 59

Web IDE branding

  1. Edit webpage title of web IDE from XX — XX — OpenVSCode Server - > XX — XX — Daytona
  2. Update Favicon
  3. Change Landing page title from OpenVSCodeServer: Editing Evolved - > Daytona: The Open Source Dev Environment Manager

Help is not sufficient to understand the point of the software

Is your feature request related to a problem? Please describe.
Maybe I am not in the loop or was living under a rock for too long but I read several times your github.com index page and I still cannot understand what is this used for and how it helps me. You specify 3 commands and say you can start coding. I don't understand as I currently work on 4 different projects and I am sure none of them will work after I enter those 3 commands and just pull the repo. What do you mean by "development environment " and how is that different than me starting vs code and syncing my settings? I am sure it is better but there is no explanation why would someone want to use this. Also you keep saying the advantage is that there will not be anymore "works on my machine" excuse, but how is that? In short I cannot understand what is this software doing at all. Is it some kind of VDI for IDE and how do I connect to the remote pc, etc. Or does it try to simply build one container after I configure everything which wouldn't work in most cases today as people run a dozen of containers and services in a typical project with complex interactions between them. Maybe I got it all wrong, which is reason more to have better help. I am usually not considered to be stupid by my friends (or they hide it too well).

Describe the solution you'd like
Please explain what exactly your software does and what runs where. Architecture page on the docs page is missing. Where is help on how do I create dev environment? Since I don't know how this works will this work with projects which are based on docker compose and start 10 containers themselves each having it's own configuration.

Describe alternatives you've considered
Checked your home page too still couldn't figure out how will this help me. My all projects consist of multiple containers and scripts which run on them initializing them, mapping files, etc. Can I create dev environment from that process and how?

Additional context
I am working on a project which has very complex configuration with multiple repos containers and processes which need to be done before everything works. We are wasting a lot of time because of this so I visited your website after I got email from you. However after reading through your docs I cannot understand is this for me and if it is how would I make it help me.

Upfront Docs about Funding/Sustainability

First of all, THANK YOU SO MUCH! This is going to be super useful for my classes.

And the "useful for my classes" quite summarizes the problem: students will run into all kinds of issues, will have awful computers and won't know any alternatives, so I better show them something stable and available for the long run.

If you provide just one or two paragraphs in the documentation what's your desired path, if you want to make a company, if you are going to open a Patreon or something like that, it would remove a lot of the uncertainty.

P.S.: I saw in your docs mentions to "Free, Pro & Ultimate" licenses. That is great! I just think the project would benefit from having that front and center!

Personal access token - docs missing

When typing the command "daytona git-providers add" need to add a url to docs where there is a set by step guide as to how to access your PAT for each of the providers

Integrate Manual or 'Create from Any Repo' Option into daytona create TUI

When users set daytona git-provider, they lose the ability to create a workspace from any public repository directly through the daytona create (TUI) interface as it defaults to users/orgs repositories. Currently, users are limited to selecting repositories that they own or are affiliated with through their organization. While the functionality to create a workspace from any public repository still exists as a command-line option (daytona create --manual), it is not available within the TUI.

Proposed Solution:
Add the ability to create workspaces from any public repository within the daytona create TUI, ensuring that users have the same level of functionality as the command-line interface.

Provider Devcontainer builder

Describe the solution you'd like
The provider interface should allow providers to implement devcontainer builds in a form suitable for the provider infrastructure.
This would allow provisioning devcontainer projects on container based workspaces (like ECS), or could allow customizing devcontiner configurations with daytona specific things.
Not all provisioners must implement devcontainer functionality.

Daytona create should auto open IDE

Much like the Dashboard in Platform the intent after create will usually be to "code" as well.

We can add a flag post "create" to not open the workspace for cases where you dont want that

Provide alternate installation instructions

Describe the solution you'd like

We should provide alternate installation instructions to the ones described in the current version of the README file.

We should instruct users how they can manually download the Daytona binary for their specific architecture and configure the rest themselves.

daytona provider install error on existing providers

If the provider is already installed, and the user tries to reinstall it - the get an error:
FATA[0109] failed to register provider: failed to initialize provider: Unrecognized remote plugin message:
Failed to read any lines from plugin's stdout

DigitalOcean install stuck

I followed https://www.daytona.io/dotfiles/install-daytona-on-digitalocean-in-minutes

...
ℹ Installing watkins helm chart...
Pulled: ghcr.io/daytonaio/charts/watkins:2.91.2
Digest: sha256:5c41f1395727e76f66fa298892d46787c280963da3fedc656c4adbe45a3e6e3d
coalesce.go:237: warning: skipped value for keycloak.configuration: Not a table.
coalesce.go:289: warning: destination for keycloak.postgresql.networkPolicy.egressRules.customRules is a table. Ignoring non-table value ([])
coalesce.go:289: warning: destination for keycloak.postgresql.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.customRules is a table. Ignoring non-table value ([])
coalesce.go:289: warning: destination for keycloak.postgresql.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules is a table. Ignoring non-table value ([])
coalesce.go:237: warning: skipped value for rabbitmq.configuration: Not a table.
W0306 20:33:03.860171   16773 warnings.go:70] metadata.name: this is used in Pod names and hostnames, which can result in surprising behavior; a DNS label is recommended: [must not contain dots]

I tried to insert a label, but nothing happened.

Open WebIDE inital error

Describe the bug
when opening the web ide you get 404 error then you need to reload after 10 seconds and it works

To Reproduce
Steps to reproduce the behavior :

  1. set ide to vs code browser
  2. daytona code
  3. pick dev environment

Expected behavior
expected that when it opens the web ide that it works

Additional context
would suggest adding a 10- 15 second attiontion delay to opening, also would type out the url in the terminal to re open it easier.

Installer Issue

The installer timed out waiting for the server to start after a system reboot.

Parse and update the git context of projects

Is your feature request related to a problem? Please describe.
Pasting a branch or PR URL link should be automatically parsed into the correct checkout branch when using daytona create.
Also, daytona list should return the correct git branch of the project even if it has changed since cloning using some kind of polling mechanism.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
E.g. "daytona create"-ing "https://github.com/daytonaio/daytona/tree/views-structure" should automatically clone and checkout to the branch views-structure.

Add secondary projects? optional

my feel is that the vast majority of users will have a single repo so having "Add secondary projects?" as a default adds more issues with users potential.

Suggestion remove from default and add flag daytona create -ap (or similar) to enable that option in the daytona create screen.

Run WebIDE as Service in Dev Environment

Is your feature request related to a problem? Please describe.
When starting the webide via "daytona code" the output is the following:

Downloading OpenVSCode Server...
Starting OpenVSCode Server...

cannot use that terminal window anyone as as need to stop the service.

Describe the solution you'd like

Expected behavior is that after starting the WebIDE server, the terminal is free to accept future commands, and also that the Web IDE continues to run as a service as long as the Development Environment is running.

Daytona doesn't gracefully handle VS code in a weird state

Describe the bug

For create, daytona will hang on establishing connection to ide if VS code doesn’t launch. There have been many times where VS code didn’t launch for me because another VS code window had focus or a dialog was up. It seems that Daytona doesn’t retry, it tries once and hangs for 3 minutes for the timeout.

The workspace is running but launching vs code failed. It makes it look like everything failed. I’d rather set async (skip-ide) as the default and connect to it when I know its going to work.

Once it fails, I can’t ever connect to it with vs code or daytona. I can see its running and desktop can show me the logs. The workspace shows up in the list but if you try to ssh to it, you’ll get:

 tmp  %  daytona ssh
FATA[0001] lookup test-simple-astro: no such host
Connection closed by UNKNOWN port 65535
FATA[0002] exit status 255
 tmp  %  daytona list

  WORKSPACE     REPOSITORY                CREATED           STATUS

  test          metcalfc/simple-astro     7 minutes ago     up 7 minutes

To Reproduce
Steps to reproduce the behavior:

  1. Open a dialog window in VS Code. You can try to ssh to a host thats not there. Any modal that requires user input to dismiss will do.
  2. daytona create a repo
  3. wait for the create to timeout
  4. daytona list or docker desktop to see the workspace running
  5. daytona ssh or vs code ssh to see that you can't get there

Expected behavior
Even if opening the IDE fails, the workspace should be started, and I should be able to retry to connect with daytona ssh or daytona code.

Screenshots
NA

Desktop (please complete the following information):

  • OS: Mac OS 14
  • Browser: [e.g. chrome, safari]
  • Daytona Version: vbobo-test

Additional context
NA

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.