{"id":32481004,"url":"https://github.com/atoniolo76/gotoni","last_synced_at":"2026-04-01T22:22:58.324Z","repository":{"id":319786704,"uuid":"1079471427","full_name":"atoniolo76/gotoni","owner":"atoniolo76","description":"gotoni is a cli for doing virtually anything with cloud instances","archived":false,"fork":false,"pushed_at":"2026-04-01T03:52:25.000Z","size":48080,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T05:50:38.332Z","etag":null,"topics":["api","cli","go","gpu","ssh"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atoniolo76.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-10-19T21:41:32.000Z","updated_at":"2026-03-27T03:59:27.000Z","dependencies_parsed_at":"2025-10-22T21:23:15.526Z","dependency_job_id":"eb8085e7-3372-47b1-8c86-501973c76b66","html_url":"https://github.com/atoniolo76/gotoni","commit_stats":null,"previous_names":["atoniolo76/gpusnapshot","atoniolo76/gotoni"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/atoniolo76/gotoni","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atoniolo76%2Fgotoni","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atoniolo76%2Fgotoni/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atoniolo76%2Fgotoni/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atoniolo76%2Fgotoni/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atoniolo76","download_url":"https://codeload.github.com/atoniolo76/gotoni/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atoniolo76%2Fgotoni/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"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":["api","cli","go","gpu","ssh"],"created_at":"2025-10-27T02:19:48.492Z","updated_at":"2026-04-01T22:22:58.314Z","avatar_url":"https://github.com/atoniolo76.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gotoni\n\n![gotoni running a remote command](./docs/Terminal.gif)\n\ngotoni lets you manage, share, and interact with your GPUs/Sandboxes over SSH.\n\n## Installation\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/atoniolo76/gotoni/main/install.sh | bash\n```\n\n## Setup\n\nExport your cloud's API key:\n\n```bash\n# Lambda.ai\nexport LAMBDA_API_KEY=xxx\n# Modal\nexport MODAL_TOKEN_ID=your_token_id\nexport MODAL_TOKEN_SECRET=your_token_secret\n# Orgo\nexport ORGO_API_KEY=your_token_here\n```\n\n### RBAC\n\nGotoni can use [SpiceDB](https://authzed.com/spicedb) to check operations based on a user's role.\n\n```bash\nexport SPICEDB_ENDPOINT=http://localhost:8444\nexport SPICEDB_TOKEN=your_preshared_key\n```\n\nThe permission hiearchy follows Organization -\u003e Project -\u003e Cluster -\u003e Instance. You can optionally restrict access to projects \n```bash\ngotoni admin org create acme              # creates org, you become admin\ngotoni admin org invite acme alice editor  # invite by nickname\ngotoni join \u003cwormhole-code\u003e               # join an org from another machine\ngotoni admin org set-role acme alice reader\n```\n\nOrg and project are saved locally when you create or join. Override with\n`GOTONI_ORG_ID` / `GOTONI_PROJECT_ID` if needed.\n\n## Workflow\n\n### 1. Launch an Instance\n\nLaunch an instance and `--wait` until the instance is ready.\n\n```bash\ngotoni launch my-project \\\n  -t gpu_1x_a10 \\\n  --filesystem my-data \\\n  --wait\n```\n\n### 2. Open in IDE\n\nOnce launched, open the remote workspace in your preferred IDE. You must specify\n`--cursor` or `--code`.\n\n\u003e **Prerequisite:** Ensure you have installed the command-line tool for your\n\u003e IDE.\n\u003e\n\u003e - **Cursor:** `Cmd+Shift+P` \u003e \"Install 'cursor' command\"\n\u003e - **VS Code:** `Cmd+Shift+P` \u003e \"Install 'code' command\"\n\n```bash\ngotoni open my-project --cursor\ngotoni open my-project --code\ngotoni open my-project /home/ubuntu/repo --cursor   # open a specific path\n```\n\n### 3. Share Access Securely\n\nGrants SSH access to your project partner or research buddy using the Magic\nWormhole protocol.\n\nWorks with both Lambda (SSH key + IP) and Modal (SSH key + tunnel) instances.\n\n**Sender (Lambda):**\n\n```bash\ngotoni share              # auto-picks first running instance\ngotoni share my-project   # specific instance\n```\n\n**Sender (Modal):**\n\n```bash\nexport GOTONI_CLOUD=modal\ngotoni share              # auto-picks first running sandbox\ngotoni share sb-abc123    # specific sandbox ID\n```\n\n**Receiver:**\n\n```bash\ngotoni receive \u003cwormhole-code\u003e\n```\n\n## Add Tasks on creation\n\nCreate tasks that will be executed during instance launch. You can specify\nservices to run in the background like an inference server.\n\n### Example: Install vLLM and Serve Kimi-K2-Thinking\n\n```bash\ngotoni tasks add --name \"install vllm\" --command \"sudo apt install -y python3-pip \u0026\u0026 pip install vllm\"\ngotoni tasks add --name \"run kimi\" --command \"vllm serve moonshotai/Kimi-K2-Thinking\" --depends-on \"install dependencies\" --type service\n```\n\n**Launch with Tasks:**\n\n```bash\ngotoni launch ml-instance\n  -t gpu_1x_a100\n  -r us-west-1\n  --wait\n  --tasks \"install vllm,run kimi\"\n```\n\n## Commands Reference\n\n### Instance Management\n\n- `gotoni launch` - Launch instances (supports waiting, filesystems, and tasks)\n- `gotoni list` - List running instances\n- `gotoni status` - Check status of services running on an instance\n- `gotoni delete` - Terminate instances\n- `gotoni available` - List available instance types and regions\n- `gotoni price` - Show pricing for instance types\n\n### Connect \u0026 Share\n\n- `gotoni open` - Open remote instance in Cursor (`--cursor`) or VS Code\n  (`--code`)\n- `gotoni connect` - Connect to a remote instance via SSH or IDE\n- `gotoni share` - Securely share instance access (Lambda + Modal)\n- `gotoni receive` - Receive shared access and auto-configure SSH\n- `gotoni run` - Execute a command on a remote instance\n\n### Automation\n\n- `gotoni tasks` - Manage automation tasks for instance provisioning\n- `gotoni provision` - Run automation tasks on an existing instance\n- `gotoni serve` - Serve models on vLLM across instances and regions\n\n### Infrastructure\n\n- `gotoni filesystems` - Manage persistent filesystems\n- `gotoni ssh-keys` - Manage SSH keys\n- `gotoni firewall` - Manage firewall rules\n- `gotoni sync` - Sync SSH keys from running instances to local database\n- `gotoni gpu` - Track GPU memory usage over time\n\n### Cluster \u0026 Load Balancing\n\n- `gotoni cluster` - Manage cluster nodes (status, setup, uploads)\n- `gotoni sglang` - Manage SGLang servers on cluster instances\n- `gotoni proxy` - Manage centralized proxy for SGLang server pools\n- `gotoni lb` - Manage local load balancer processes\n- `gotoni lb-deploy` - Build, upload, and start load balancer on instances\n- `gotoni tokenizer` - Manage tokenizer sidecar on cluster instances\n\n### Utilities\n\n- `gotoni update` - Update gotoni to the latest version\n- `gotoni check` - Parse and analyze a Dockerfile\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatoniolo76%2Fgotoni","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatoniolo76%2Fgotoni","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatoniolo76%2Fgotoni/lists"}