{"id":17442372,"url":"https://github.com/iximiuz/labctl","last_synced_at":"2026-03-16T00:48:09.167Z","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-01-15T21:26:52.000Z","size":497,"stargazers_count":381,"open_issues_count":12,"forks_count":43,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-15T21:57:01.217Z","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-01-15T21:26:29.000Z","dependencies_parsed_at":"2024-04-22T15:45:45.454Z","dependency_job_id":"9cff7dcd-1142-4212-bfec-0223a80c3c5e","html_url":"https://github.com/iximiuz/labctl","commit_stats":null,"previous_names":["iximiuz/labctl"],"tags_count":66,"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":28510928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"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":["devops","docker","kubernetes","linux","networking","playgrounds"],"created_at":"2024-10-17T16:01:32.444Z","updated_at":"2026-01-17T14:58:29.267Z","avatar_url":"https://github.com/iximiuz.png","language":"Go","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 (VSCode, JetBrains, etc) to access playgrounds\n\nYou can start a playground and open it in your IDE with:\n\n```sh\nlabctl playground start docker --ide cursor\n```\n\nYou can use the **SSH proxy mode** to access playgrounds from your IDE:\n\n```sh\nlabctl ssh-proxy \u003cplayground-id\u003e\n```\n\nExample output:\n\n```text\nSSH proxy is running on 58279\n\n# Connect from the terminal:\nssh -i ~/.ssh/iximiuz_labs_user ssh://laborant@127.0.0.1:58279\n\n# For better experience, add the following to your ~/.ssh/config:\nHost localhost 127.0.0.1 ::1\n  IdentityFile ~/.ssh/iximiuz_labs_user\n  AddKeysToAgent yes\n  UseKeychain yes\n  StrictHostKeyChecking no\n  UserKnownHostsFile /dev/null\n\n# To access the playground in Visual Studio Code:\ncode --folder-uri vscode-remote://ssh-remote+laborant@127.0.0.1:58279/home/laborant\n\n# To access the playground in Cursor:\ncursor --folder-uri vscode-remote://ssh-remote+laborant@127.0.0.1:58279/home/laborant\n\n\nPress Ctrl+C to stop\n```\n\nAfter adding the above piece 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","funding_links":[],"categories":["Go","linux"],"sub_categories":[],"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"}