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

Uploaded Python 3

File details

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

File metadata

  • Download URL: kortix_justavps-2026.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 a8f0b4a5f36b64fba93059a33582a137149741fc8cbd774bd721f05fced167e4
MD5 ef8f152b329035ea57bc8752c742e3c2
BLAKE2b-256 6b3234a0921c07dbb5c800be9f144b55b3c1045e4e0f611fde930d17f58b14a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for kortix_justavps-2026.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f5e9ab3843659b22c6b81fcbb88435a2f2c64becfb822bc63e40ce3a0b1c9564
MD5 e6e82deb36911938d098030a09d83548
BLAKE2b-256 f87a5afdfb6309159541d63421008527b9e29c5388462c48a2b0845c316d13d9

See more details on using hashes here.

Provenance

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