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="starter", region="eu", 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="pro")
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("eu")
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.5.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.5-py3-none-any.whl (291.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kortix_justavps-2026.3.5.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.5.tar.gz
Algorithm Hash digest
SHA256 0e0343c985c11cf830244a2bd4cbed803bd8e1be7a0e74e2d41395eb156a1c0c
MD5 05a25ec0431b3aedda4ad7075e915819
BLAKE2b-256 c74f8e9c255e53a239de9d309859e1273368cf54dc15f03f49fcfb19985229e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for kortix_justavps-2026.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 79bbb6c193b43084a3406b6939122e2942b4aab2b3d76c6b92fa88507477f926
MD5 6a665c1610c481130300e52778c0fad4
BLAKE2b-256 e74fd6b07c186806b3bd44f7a01172eb0b5896f13704b916b38c5843919e19d1

See more details on using hashes here.

Provenance

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