premote
Remote CLI & KVM controller for Google Antigravity (agy) and desktop applications in isolated Docker noVNC containers.
AI Cost Tracking
- 🤖 LLM usage: $0.0271 (1 commits)
- 👤 Human dev: ~$100 (1.0h @ $100/h, 30min dedup)
Generated on 2026-09-17 using openrouter/qwen/qwen3-coder-next
Overview
premote allows you to control, monitor, and automate AI coding agents (specifically Google Antigravity CLI agy) and desktop GUI applications running inside Docker noVNC containers directly from your host PC terminal.
It provides two operation layers:
- Direct Headless / CLI Layer: Fast, non-interactive execution of prompts with auto-approval of permissions (
--dangerously-skip-permissions), JSON output, session continuation, and live quota queries (/quota). - KVM / Desktop GUI Layer: Live simulation of mouse and keyboard events on the X11 desktop displayed in noVNC (
http://127.0.0.1:<port>/vnc.html), including window focus, keystrokes, mouse clicks, and screen capture.
Installation
# Clone the repository
git clone https://github.com/subactor/premote.git
cd premote
# Install locally in editable mode
pip install -e .
Usage
Syntax
premote <account> <command> [arguments...]
CLI / Agent Commands
1. Check Model Quotas & Limits
View live remaining quota percentages and reset timers (Gemini, Claude, GPT):
premote prototypowanie quota
Output:
GRUPA / BUCKET POZOSTAŁO RESET
--------------------------------------------------------------------
[Gemini Models]
Weekly Limit Remaining 98% 2026-09-24T10:15:12Z
Five Hour Limit Remaining 90% 2026-09-17T15:15:12Z
[Claude and GPT models]
Weekly Limit Remaining 100% 2026-09-24T13:27:31Z
Five Hour Limit Remaining 100% 2026-09-17T18:27:31Z
For automation / JSON parsing:
premote prototypowanie quota-json
2. Execute Prompt with Auto-Approval
Run a prompt with --dangerously-skip-permissions so it never blocks waiting for confirmation:
premote prototypowanie prompt "Napisz oneliner w bashu sprawdzający zużycie dysku"
Structured JSON response with token usage and conversation ID:
premote prototypowanie prompt-json "Podaj 3 zalety Dockera"
3. Continue Previous Conversation
premote prototypowanie continue "Rozwiń drugi punkt"
4. List Available AI Models
premote prototypowanie models
5. Interactive Terminal / TUI
# Interactive bash shell inside container
premote prototypowanie terminal
# Interactive agy TUI in your terminal
premote prototypowanie agy-interactive
KVM / Desktop GUI Commands (noVNC)
1. List Open Windows
premote prototypowanie kvm-windows
2. Focus Window
premote prototypowanie kvm-focus "Terminal"
3. Type Text into Active Window
premote prototypowanie kvm-type "echo 'Wpisane z PC' && agy models"
4. Send Key Strokes (Navigation, Enter, Approvals)
# Press Enter
premote prototypowanie kvm-key Return
# Select option with Down arrow and Enter
premote prototypowanie kvm-key Down
premote prototypowanie kvm-key Return
# Approve with 'y'
premote prototypowanie kvm-key y
premote prototypowanie kvm-key Return
5. Click at Coordinates (X, Y)
premote prototypowanie kvm-click 800 500
6. Take Screenshot of noVNC Desktop
premote prototypowanie kvm-capture screen.png
Python API
You can also use premote directly inside Python applications:
from premote import ContainerClient, AntigravityClient, KVMController
# Connect to container
container = ContainerClient("prototypowanie")
agy = AntigravityClient(container)
kvm = KVMController(container)
# 1. Ask Antigravity a question
result = agy.prompt("Napisz prostą funkcję hello world w Pythonie")
print("Response:", result.response)
# 2. Check model limits
quota = agy.quota()
for group in quota.groups:
print(f"Group: {group.name}")
for bucket in group.buckets:
print(f" {bucket.name}: {bucket.remaining_percent}% (Resets: {bucket.reset_time})")
# 3. Simulate GUI typing in noVNC
kvm.focus("Terminal")
kvm.type_text("ls -la")
kvm.key("Return")
License
Licensed under Apache-2.0.
Release files for premote 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| premote-0.1.1.tar.gz | 14.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| premote-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.2 kB
Release files / premote-0.1.1.tar.gz
| Download URL | premote-0.1.1.tar.gz |
|---|---|
| Size | 14.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79fd25e379e9c440ea57ec07b54332b75ac0743389909615d10dd2af8d3ce373
|
|
BLAKE2b-256 checksum How to use checksums |
37ff484974251c396e8e15be678086b57621ebddeb7c53efe1a909e5c71abe9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / premote-0.1.1-py3-none-any.whl
| Download URL | premote-0.1.1-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a49a69029a8ad9c268b7c6bd09d94924b887a93da628fae3baf8d49939d06ceb
|
|
BLAKE2b-256 checksum How to use checksums |
201bb72c0ae662a32eb710e5c4eb510824ceec9f490d45cbe6f323b09e07f9e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|