Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getnen.ai/llms.txt

Use this file to discover all available pages before exploring further.

Supported Models

ModelAPI String
Northstar (CUA, fast)tzafon.northstar-cua-fast
Northstar is Lightcone’s vision-language model purpose-built for computer use. It interprets screenshots and emits typed action items (click, type, scroll, etc.) that you execute against the desktop.

Integration Pattern

Northstar uses Lightcone’s Responses API with the built-in computer_use tool, not the JSON-Schema function-calling pattern that Anthropic and OpenAI chat models use. As a result, you do not consume Nen’s GET /tools JSON Schema — instead, you declare the screen size and Northstar emits action items in a fixed shape that you translate into Nen computer actions.
from tzafon import Lightcone

lc = Lightcone()  # reads TZAFON_API_KEY

response = lc.responses.create(
    model="tzafon.northstar-cua-fast",
    tools=[{
        "type": "computer_use",
        "display_width": 1024,
        "display_height": 768,
        "environment": "desktop",
    }],
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Open Firefox and go to wikipedia.org"},
            {"type": "input_image", "image_url": f"data:image/png;base64,{screenshot_b64}", "detail": "auto"},
        ],
    }],
)
Subsequent turns send the resulting screenshot back as a computer_call_output, chained via previous_response_id:
response = lc.responses.create(
    model="tzafon.northstar-cua-fast",
    tools=[...],
    previous_response_id=response.id,
    input=[{
        "type": "computer_call_output",
        "call_id": call.call_id,
        "output": {"type": "input_image", "image_url": f"data:image/png;base64,{new_screenshot_b64}", "detail": "auto"},
    }],
)

Action Mapping

Northstar emits action items in response.output[*].action. Translate each one into the equivalent Nen computer tool action:
Northstar actionNen actionNotes
click (button: "left")left_clickcoordinate: [x, y]
click (button: "right")right_clickcoordinate: [x, y]
click (button: "wheel")middle_clickcoordinate: [x, y]
double_clickdouble_clickcoordinate: [x, y]
movemouse_movecoordinate: [x, y]
dragleft_click_dragUse path[0] for start_coordinate and path[-1] for coordinate
typetypetext: string
keypresskeyJoin keys with + (e.g. "ctrl+a"); map Control -> ctrl, Enter -> Return
point_and_typeleft_click + typeClick at (x, y) then type text
scrollscrollPick direction from the sign of scroll_y; amount = max(1, abs(scroll_y) // 100). Note: only up/down is supported — horizontal scroll returns HTTP 400. Drop scroll_x or skip pure-horizontal scrolls.
wait(sleep)No remote call needed
screenshotscreenshotAlready taken at end of every turn

Termination

Unlike Anthropic and OpenAI chat models — which signal completion by returning a plain text/message block instead of another tool call — Northstar tends to keep emitting computer_call items even after the visible task goal is reached. Plan for one of:
  • An external success oracle (URL check, DOM assertion, etc.).
  • A heuristic on message content: stop when the model finally emits a text reply with no computer_call.
  • A repetition detector: stop when the last 2 actions are identical and the screen is unchanged.
In practice, set --max-steps generously and treat hitting it as a normal exit, not an error.

Getting Started

Use nen example create to scaffold a ready-to-run agent project:
nen example create lightcone-computer-use
cd nen-lightcone-cua
uv sync && cp .env.example .env
# Fill in NEN_API_KEY and TZAFON_API_KEY in .env
uv run python agent.py --task "Open Firefox and navigate to wikipedia.org"
See the Quickstart for a full walkthrough, or run nen example list to see all templates.

Next Steps

Claude (Anthropic)

JSON-Schema function-calling pattern with Claude

GPT (OpenAI)

JSON-Schema function-calling pattern with GPT

Computer Tool Reference

Full reference for all computer actions