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

Uploaded Python 3

File details

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

File metadata

  • Download URL: kortix_justavps-2026.3.4.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.4.tar.gz
Algorithm Hash digest
SHA256 369cc93e35918aac3b9db02d99c4ce84328eadd755c97f09b3ea66ae8efb4619
MD5 599836c362d603839baaa478f5fcfdbb
BLAKE2b-256 c5ec989cc6812d80a0ce04e75aa618113fd9097fc9e658c3dcbdb9f9af0b1063

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for kortix_justavps-2026.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fe357746bee8fbe11ab544ab018e30f1500eaba1e5a028fcad8c08081c30f29c
MD5 37ee20db54af81c60366a1c4feffacbe
BLAKE2b-256 22853290cf779215951a43f2d70cf3cf8cef91bebd391b52f909806297c12ed2

See more details on using hashes here.

Provenance

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