News2026-04-08

Announcing Lightcone SDK

The Lightcone SDK is out — pip install tzafon and start automating computers with Northstar in Python or TypeScript.

Announcing Lightcone SDK

The most powerful SDK for computer use. Today we're releasing the Lightcone SDK — the fastest path from idea to working computer automation, in Python or TypeScript.

pip install tzafon  ·  npm install @tzafon/lightcone

What is Northstar?

Northstar is Tzafon's vision-language model trained specifically for computer use. You give it a screenshot and a goal. It handles the rest — what to click, what to type, when to scroll, when it's done. The model looks at the screen and acts.

The simplest thing

Point Northstar at a browser, give it a task, let it run:

from tzafon import Lightcone

client = Lightcone()

for event in client.agent.tasks.start_stream(
    instruction="Go to wikipedia.org and search for Ada Lovelace",
    kind="browser",
):
    print(event)

Northstar opens a browser, navigates, searches, handles popups — you get a stream of events as it works.

Build your own loop

When you need control at every step, use the Responses API directly:

with client.computer.create(kind="browser") as computer:
    screenshot_url = computer.get_screenshot_url(computer.screenshot())

    response = client.responses.create(
        model="tzafon.northstar-cua-fast",
        tools=[{"type": "computer_use", "display_width": 1280, "display_height": 720, "environment": "browser"}],
        input=[{
            "role": "user",
            "content": [
                {"type": "input_text", "text": "Log in and export the monthly report"},
                {"type": "input_image", "image_url": screenshot_url, "detail": "auto"},
            ],
        }],
    )

Northstar returns a computer_call — you execute the action, send back a screenshot, repeat. Full control, every step.

Multi-turn conversations

Chain requests without resending full history. Pass previous_response_id on any follow-up and the model picks up exactly where it left off:

first = client.responses.create(...)
second = client.responses.create(
    previous_response_id=first.id,
    input=[{"role": "user", "content": [...]}],
    ...
)

Every response is stored and retrievable by ID. Pass store=False to opt out of persistence for a given request.

Already on OpenAI?

Northstar is OpenAI-compatible. Change two lines:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.tzafon.ai/v1",
    api_key="sk_...",
)

Your existing streaming, tool-calling, and structured output code works as-is.

TypeScript support

Full TypeScript support, with complete type definitions for Node.js, Bun, Deno, and Cloudflare Workers:

import Lightcone from "@tzafon/lightcone";

const client = new Lightcone();

const stream = client.agent.tasks.startStream({
  instruction: "Check my inbox and summarize unread emails",
  kind: "browser",
});

for await (const event of stream) {
  console.log(event);
}

What's in the box

  • Responses API — build your own loop, step by step
  • Tasks — fully managed, fire and forget
  • Chat Completions API — the interface you already know
  • Computers API — direct control, no model involved
  • Multi-turn chaining — previous_response_id across any number of turns
  • Persistent sessions — persistent VMs
  • Python + TypeScript, fully typed

Pricing

Model Input Output
tzafon.northstar-cua-fast $1.00 / 1M tokens $5.00 / 1M tokens

Each request using the computer_use tool includes approximately 1,974 additional input tokens of fixed overhead from the injected system prompt and tool definition.

Get started

Full docs at docs.lightcone.ai. Starter templates at github.com/tzafon/lightcone.

Built something? Reach us at [email protected].

The full changelog is available at tzafon.ai/changelog.

"Visit stripe.com/pricing, vercel.com/pricing, and linear.app. Extract all plan names and monthly prices."