Skip to main content

Python SDK for the Nen Desktop API

Project description

nen-desktop

Python SDK for the Nen Desktop API. Create cloud desktops, execute computer-use tools, and manage RDP sessions programmatically.

Installation

pip install nen-sdk-python

Quick Start

from nen_sdk import NenDesktop

client = NenDesktop(api_key="sk_nen_...")

# Create a desktop
desktop = client.create_desktop()
print(f"Created: {desktop.desktop_id} (status: {desktop.status})")

# Check its status
desktop = client.get_desktop(desktop.desktop_id)
print(f"Status: {desktop.status}, IP: {desktop.public_ip}")

# Clean up
client.delete_desktop(desktop.desktop_id)

Configuration

client = NenDesktop(
    api_key="sk_nen_...",
    base_url="https://desktop.api.getnen.ai",  # default
    timeout=30.0,                                # default (seconds)
)

The execute() method uses a 120-second timeout regardless of the client timeout, since tool execution can be slow.

API Reference

Desktop CRUD

Method Description
create_desktop(desktop_type="sandbox") Create a new desktop. Returns Desktop.
list_desktops() List all active desktops. Returns list[Desktop].
get_desktop(desktop_id) Get a single desktop. Returns Desktop.
update_desktop(desktop_id, *, name) Update desktop name. Returns Desktop.
delete_desktop(desktop_id) Delete a desktop. Returns DeleteResponse.

Computer-use actions

Typed helpers that build the correct wire format automatically:

Method Description
screenshot(desktop_id) Capture a screenshot. Returns ExecuteResult with base64_image.
left_click(desktop_id, x, y) Left-click at (x, y).
right_click(desktop_id, x, y) Right-click at (x, y).
double_click(desktop_id, x, y) Double-click at (x, y).
middle_click(desktop_id, x, y) Middle-click at (x, y).
mouse_move(desktop_id, x, y) Move the cursor to (x, y) without clicking.
type_text(desktop_id, text) Type a string at the current cursor position.
key_press(desktop_id, key) Send a key or chord (e.g. "Return", "ctrl+c").
scroll(desktop_id, x, y, *, direction, amount=3) Scroll at (x, y). direction is "up" or "down".
drag(desktop_id, start_x, start_y, end_x, end_y) Click-drag from (start_x, start_y) to (end_x, end_y).
cursor_position(desktop_id) Return the current cursor coordinates.
# Take a screenshot
result = client.screenshot(desktop.desktop_id)
# result.base64_image contains a PNG encoded as base64

# Click, type, scroll
client.left_click(desktop.desktop_id, 512, 384)
client.type_text(desktop.desktop_id, "hello world")
client.scroll(desktop.desktop_id, 512, 384, direction="down", amount=5)

# Key combos
client.key_press(desktop.desktop_id, "ctrl+c")
client.key_press(desktop.desktop_id, "Return")

Low-level execute

Method Description
execute(desktop_id, *, tool, action, params=None) Execute any tool action with a raw params dict. Returns ExecuteResult.
list_tools(desktop_id) List available tools and their schemas. Returns list[ToolSchema].
get_tool_logs(desktop_id) Get tool execution logs. Returns list[dict].

Sessions

Method Description
create_session(desktop_id) Create or reconnect an RDP session. Returns SessionInfo.
get_session(desktop_id) Get session status. Returns SessionInfo.
delete_session(desktop_id) Disconnect the session. Returns None.

Error Handling

All API errors raise a subclass of NenDesktopError, which carries status_code and response_body:

from nen_sdk import NenDesktop, NotFoundError, AuthenticationError

client = NenDesktop(api_key="sk_nen_...")

try:
    client.get_desktop("dsk_nonexistent")
except NotFoundError as e:
    print(f"Not found: {e.status_code}")
except AuthenticationError as e:
    print(f"Auth failed: {e.status_code}")
Exception Status Code
AuthenticationError 401
NotFoundError 404
ConflictError 409
ServerError 5xx
NenDesktopError anything else >= 400

Context Manager

The client supports context manager usage to automatically close the underlying HTTP connection:

with NenDesktop(api_key="sk_nen_...") as client:
    desktop = client.create_desktop()
    # ...

Examples

See the full agent example in cmd/nen/templates/anthropic-computer-use/agent.py.

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

nen_sdk_python-0.2.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

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

nen_sdk_python-0.2.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file nen_sdk_python-0.2.0.tar.gz.

File metadata

  • Download URL: nen_sdk_python-0.2.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for nen_sdk_python-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ad09f3a1b4a6a2096f33f195610289b36895e9c9bcbe64299c62e6bae39d47ef
MD5 78de8861cbdf9203a1405ed116701c73
BLAKE2b-256 da858ac013453bde80cf2abff02bdef3286b4d8a40ed4cf12098915279c1c49c

See more details on using hashes here.

File details

Details for the file nen_sdk_python-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nen_sdk_python-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa8f7112e227730b0e35a1a024e3661c09870a4586035698f848e18cac5d7a52
MD5 46a7fee6a633ff072b3f6fa64f45ab65
BLAKE2b-256 9ea54c815a5d11961359b9084ad52bd917fec346fa525b506903a83016c777cc

See more details on using hashes here.

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