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.0.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.0-py3-none-any.whl (291.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kortix_justavps-2026.3.0.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.0.tar.gz
Algorithm Hash digest
SHA256 9dfe74ff762201b9af5f38dc35554bd89b8d78239e42c56aafdcf1f52a58681a
MD5 94b92d87489f8843a4b87f3702bc7de5
BLAKE2b-256 85f8849beb6208fd002732bac69b48b0eada582cf69f90a5e120117cc7a28d8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortix_justavps-2026.3.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kortix_justavps-2026.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2b625a831039b459eb2129ad4e9eabc14667e7b12df498e44acddb219ed899f
MD5 82be0b574569260e49ffdd7cdee666b4
BLAKE2b-256 170efb76fb035ac5341e18f8145cac164e30d684f5e3f289f8931dc98dc4e1b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortix_justavps-2026.3.0-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