{"id":17442372,"url":"https://github.com/iximiuz/labctl","last_synced_at":"2026-07-05T14:00:52.259Z","repository":{"id":226497548,"uuid":"765376239","full_name":"iximiuz/labctl","owner":"iximiuz","description":"iximiuz Labs control - start remote microVM playgrounds from the command line.","archived":false,"fork":false,"pushed_at":"2026-06-18T12:02:40.000Z","size":699,"stargazers_count":428,"open_issues_count":16,"forks_count":55,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-18T14:04:58.284Z","etag":null,"topics":["devops","docker","kubernetes","linux","networking","playgrounds"],"latest_commit_sha":null,"homepage":"https://labs.iximiuz.com/playgrounds","language":"Go","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/iximiuz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-29T19:55:08.000Z","updated_at":"2026-06-18T12:02:11.000Z","dependencies_parsed_at":"2026-06-18T14:02:32.939Z","dependency_job_id":null,"html_url":"https://github.com/iximiuz/labctl","commit_stats":null,"previous_names":["iximiuz/labctl"],"tags_count":99,"template":false,"template_full_name":null,"purl":"pkg:github/iximiuz/labctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iximiuz%2Flabctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iximiuz%2Flabctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iximiuz%2Flabctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iximiuz%2Flabctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iximiuz","download_url":"https://codeload.github.com/iximiuz/labctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iximiuz%2Flabctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35156494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["devops","docker","kubernetes","linux","networking","playgrounds"],"created_at":"2024-10-17T16:01:32.444Z","updated_at":"2026-07-05T14:00:52.251Z","avatar_url":"https://github.com/iximiuz.png","language":"Go","funding_links":[],"categories":["Go","linux"],"sub_categories":[],"readme":"# iximiuz Labs control - Start Remote microVM Playgrounds From The Command Line\n\nThis is a command-line client for [iximiuz Labs](https://labs.iximiuz.com).\nYou can use it to start and access Linux, Docker, Kubernetes, networking, and other types of DevOps playgrounds.\nPlaygrounds are ephemeral, disposable, and secure enough for most learning, experimentation, and research use cases.\n\nSome popular playgrounds:\n\n- [ubuntu](https://labs.iximiuz.com/playgrounds/ubuntu) - A vanilla Ubuntu server.\n- [k3s](https://labs.iximiuz.com/playgrounds/k3s) - A multi-node K3s cluster with a load balancer, Helm, and more.\n- [docker](https://labs.iximiuz.com/playgrounds/docker) - A Linux server with Docker engine pre-installed.\n- [podman](https://labs.iximiuz.com/playgrounds/podman) - A Linux server with Podman, a daemonless Docker alternative.\n- [mini-lan-ubuntu](https://labs.iximiuz.com/playgrounds/mini-lan-ubuntu) - Four refined Ubuntu VMs connected into a single network.\n- [k8s-client-go](https://labs.iximiuz.com/playgrounds/k8s-client-go) - Mini-programs demonstrating Kubernetes client-go usage.\n- [golang](https://labs.iximiuz.com/playgrounds/golang) - A fresh Go version and a loaded VS Code (or Vim) is all you need.\n\nSee the full list of playgrounds at [labs.iximiuz.com/playgrounds](https://labs.iximiuz.com/playgrounds).\n\n## 🎬 Getting started\n\nCheck out this short recording on YouTube to get started:\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca target=\"_blank\" href=\"https://youtu.be/7JOY9YpF8f0\"\u003e\u003cimg src=\"https://img.youtube.com/vi/7JOY9YpF8f0/0.jpg\" alt=\"Getting started with labctl\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Installation\n\nThe command below will download the latest release to `~/.iximiuz/labctl/bin`, adding it to your PATH.\n\n```sh\ncurl -sf https://labs.iximiuz.com/cli/install.sh | sh\n```\n\n`labctl` is also available via Homebrew on macOS and Linux:\n\n```sh\nbrew install labctl\n```\n\n## Usage\n\n### Authentication\n\nFirst, you need to authenticate the CLI session with iximiuz Labs.\nThe command below will open a browser page with a one-time use URL.\n\n```sh\nlabctl auth login\n```\n\n### Starting playgrounds\n\nOnce you have authenticated, you can start a new playground with a simple:\n\n```sh\nlabctl playground start docker\n```\n\nYou can also automatically **open the playground in a browser** with:\n\n```sh\nlabctl playground start k3s --open\n```\n\n...or **SSH into the playground's machine** with:\n\n```sh\nlabctl playground start ubuntu-24-04 --ssh\n```\n\n### SSH into a playground\n\nOnce you have started a playground, you can access it with:\n\n```sh\nlabctl ssh \u003cplayground-id\u003e\n```\n\n...or run a one-off command with:\n\n```sh\nlabctl ssh \u003cplayground-id\u003e -- ls -la /\n```\n\n### Using IDE (VS Code, Cursor, Windsurf) to access playgrounds\n\nThe `labctl ide` command opens a playground directly in your local IDE:\n\n```sh\n# Start a playground and open it in Cursor\nPLAY_ID=$(labctl playground start golang)\nlabctl ide cursor $PLAY_ID\n```\n\nYou can also clone one or more Git repositories into the playground:\n\n```sh\nlabctl ide code $PLAY_ID --repo https://github.com/user/repo\n\n# or\n\nlabctl ide code $PLAY_ID --workdir projects --repo https://github.com/foo/bar --repo https://github.com/baz/qux\n```\n\n[**INSECURE**] For private repositories, use `--forward-agent` to forward your local SSH keys:\n\n```sh\nlabctl ide code $PLAY_ID --forward-agent --repo git@github.com:user/private-repo\n```\n\nAlternatively, you can use `labctl ssh-proxy` to start a raw SSH proxy and connect manually:\n\n```sh\nlabctl ssh-proxy \u003cplayground-id\u003e\n```\n\nAfter adding the suggested SSH config entries to your `~/.ssh/config`,\nyou'll be able to develop right on the playground machine using the [Visual Studio Code Remote - SSH extension](https://code.visualstudio.com/docs/remote/ssh) or its JetBrains counterpart.\nCheck out this [short recording on YouTube](https://youtu.be/wah_yLoYk0M) demonstrating the use case.\n\n### Sharing the playground access with a web terminal\n\nYou can share the playground access with others by sending them a URL to an exposed web terminal session:\n\n```sh\nlabctl expose shell \u003cplayground-id\u003e --public\n```\n\n### Exposing HTTP(s) services running in the playground\n\nYou can expose HTTP(s) services running in the playground to the public internet with:\n\n```sh\nlabctl expose port \u003cplayground-id\u003e \u003cport\u003e\n```\n\nExample:\n\n```sh\n# Start a new Docker playground\nPLAYGROUND_ID=$(labctl playground start -q docker)\n\n# Run a container that listens on port 8080\nlabctl ssh $PLAYGROUND_ID -- docker run -p 8080:80 -d nginx:alpine\n\n# Expose port 8080 to the internet\nlabctl expose port $PLAYGROUND_ID 8080 --open\n```\n\nThe `labctl expose port` command supports a number of options to enable/disable HTTPS,\nset the Host header and path overrides, and control the URL access.\n\n### Port forwarding\n\nYou can securely expose any service (HTTP, TCP, UDP, etc) running in the playground to your local machine with:\n\n```sh\nlabctl port-forward \u003cplayground-id\u003e -L \u003clocal-port\u003e:\u003cremote-port\u003e\n```\n\nYou can also expose locally running services to the playground using **remote port forwarding** (via SSH):\n\n```sh\nlabctl ssh-proxy --address \u003clocal-proxy-address\u003e \u003cplayground-id\u003e\n\nssh -i ~/.ssh/iximiuz_labs_user \\\n  -R \u003cremote-host\u003e:\u003cremote-port\u003e:\u003clocal-host\u003e:\u003clocal-port\u003e \\\n  ssh://root@\u003clocal-proxy-address\u003e\n```\n\n### Listing, stopping, restarting, and destroying playgrounds\n\nYou can list recent playgrounds with:\n\n```sh\nlabctl playground list\n```\n\nAnd stop a running playground with:\n\n```sh\nlabctl playground stop \u003cplayground-id\u003e\n```\n\nStopping a playground shuts down its virtual machines, preserving the playground state and the VM disks in a remote storage.\nYou can restart a stopped playground later on using the following command:\n\n```sh\nlabctl playground restart \u003cplayground-id\u003e\n```\n\nTo dispose of a running or stopped playground, completely erasing its data, use the `labctl destroy` command:\n\n```sh\nlabctl playground destroy \u003cplayground-id\u003e\n```\n\n### Signing out and deleting the CLI\n\nYou can sign out and delete the CLI session with:\n\n```sh\nlabctl auth logout\n```\n\nTo uninstall the CLI, just remove the `~/.iximiuz/labctl` directory.\n\n## License\n\nAPACHE-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiximiuz%2Flabctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiximiuz%2Flabctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiximiuz%2Flabctl/lists"}