Skip to main content

Official Python SDK for the JustAVPS API — machines, filesystem, process execution

Project description

JustAVPS Python SDK

Official Python client for the JustAVPS API.

pip install kortix-justavps

Quick Start

from justavps import JustAVPS

client = JustAVPS("sk_live_...")

Machines

# List machines
machines = client.machines.list()

# Create a machine
machine = client.machines.create(server_type="cpx32", region="hel1", name="my-box")
print(f"Created: {machine['id']}{machine['slug']}")

# Get details
machine = client.machines.get(machine_id)
print(f"Status: {machine['status']}, IP: {machine['ip']}")

# Reboot / Resize / Delete
client.machines.reboot(machine_id)
client.machines.resize(machine_id, server_type="cpx42")
client.machines.delete(machine_id)

Toolbox: Filesystem

Read, write, search, and manage files on a running machine.

tb = client.toolbox(machine_id)

# List files
entries = tb.files.list("/root")
for e in entries:
    print(f"  {e['type']:4s} {e['mode_bits']} {e['size']:>8d} {e['name']}")

# Upload a file (auto-creates parent dirs)
tb.files.upload("/root/app.py", "print('hello')", mode="755")

# Download a file
content = tb.files.download("/root/app.py")

# Check existence
result = tb.files.exists("/root/app.py")
print(result["exists"], result["type"])

# File metadata
info = tb.files.info("/root/app.py")
print(f"Size: {info['size']}, Owner: {info['owner']}")

# Create directory (mkdir -p)
tb.files.mkdir("/root/project/src")

# Search text in files (grep)
result = tb.files.find("/root/project", r"TODO|FIXME", include="*.py")
for m in result["matches"]:
    print(f"  {m['file']}:{m['line']}: {m['content']}")

# Find and replace
tb.files.replace(["/root/app.py"], "hello", "goodbye")

# Move / rename
tb.files.move("/root/app.py", "/root/main.py")

# Set permissions
tb.files.chmod("/root/main.py", "755")

# Delete file
tb.files.remove("/root/main.py")

# Delete directory recursively
tb.files.remove("/root/project", recursive=True)

Toolbox: Process

Execute commands, run code, and manage processes on a running machine.

tb = client.toolbox(machine_id)

# Execute a shell command
result = tb.process.exec("ls -la /root")
print(f"Exit: {result['exit_code']}")
print(result["stdout"])

# Execute with cwd, timeout, env vars
result = tb.process.exec(
    "npm install && npm run build",
    cwd="/root/project",
    timeout=120,
    env={"NODE_ENV": "production"},
)

# Run a code snippet
result = tb.process.code_run("print(6 * 7)", language="python")
print(result["stdout"])  # "42\n"

# List running processes
processes = tb.process.list()
for p in processes:
    print(f"  PID {p['pid']}: {p['command']}")

# Kill a process
tb.process.kill(1234, signal="SIGTERM")

Images

# Create image from a running machine
image = client.machines.create_image(machine_id, name="my-snapshot")

# List / get / delete
images = client.images.list()
image = client.images.get(image_id)
client.images.delete(image_id)

SSH Keys, API Keys, Webhooks

# SSH Keys
keys = client.ssh_keys.list()
key = client.ssh_keys.create("laptop", "ssh-ed25519 AAAA...")
client.ssh_keys.delete(key["id"])

# API Keys
keys = client.api_keys.list()
key = client.api_keys.create("ci-deploy")
print(key["key"])  # Only shown once!
client.api_keys.delete(key["id"])

# Webhooks
hooks = client.webhooks.list()
hook = client.webhooks.create("https://example.com/hook", ["machine.ready", "machine.deleted"])
client.webhooks.delete(hook["id"])

Server Types

providers = client.server_types.providers()
regions = client.server_types.regions("cloud")
types = client.server_types.list("hel1")
for t in types:
    print(f"  {t['name']}: {t['cores']} vCPU, {t['memory']}GB, ${t['price_monthly']}/mo")

Context Manager

with JustAVPS("sk_live_...") as client:
    machines = client.machines.list()
    # client.close() called automatically

API Reference

Full interactive docs: justavps.com/api/docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kortix_justavps-2026.3.3.tar.gz (64.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kortix_justavps-2026.3.3-py3-none-any.whl (291.4 kB view details)

Uploaded Python 3

File details

Details for the file kortix_justavps-2026.3.3.tar.gz.

File metadata

  • Download URL: kortix_justavps-2026.3.3.tar.gz
  • Upload date:
  • Size: 64.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kortix_justavps-2026.3.3.tar.gz
Algorithm Hash digest
SHA256 b1d89a28b35752b72582728522c925de480bb2a023292ba77a616959267740f4
MD5 951be7c91bedbfb0d8945bfe7fbd34ec
BLAKE2b-256 84bc0f07a7672cca9b6d41aac4b89ffbb9eb53a6c633742f6f20ff8cc09cc767

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortix_justavps-2026.3.3.tar.gz:

Publisher: publish-sdks.yml on kortix-ai/justavps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kortix_justavps-2026.3.3-py3-none-any.whl.

File metadata

File hashes

Hashes for kortix_justavps-2026.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 59e16a6860e6143e2347d97184df0cf24a0609836ec98fa02f674ef33a91f670
MD5 bd77c67a073828fec5b0c99741ff6d06
BLAKE2b-256 0aee9a9d638121b66410adddf70b750948f4017d1bd74a9e7d81b1b17c69d073

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortix_justavps-2026.3.3-py3-none-any.whl:

Publisher: publish-sdks.yml on kortix-ai/justavps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page