Your local models, connected.

Console

Connect your computer, send a job and retrieve its result.

01 / CONNECT

Connect your device

No project connected
1

Open your project

Use the owner key provided by your operator. It stays in this tab’s session.

Hosting this service yourself?

Create a project using the server’s administrator key. Save the owner key when it appears.

2

Pair your computer

Start your model server, then run the agent on the same computer. No Docker needed for the agent.

Your devices

Copy the public key from pq-agent key to verify your device independently of this service.

Your paired devices will appear here.

02 / TRY IT

Playground

Not connected
Your browser connection

Your browser’s decryption key stays in local browser storage. Refreshing is safe; clearing site data removes access to old encrypted results.

Result

Ready when you are
Your model’s response will appear here. The job can wait safely while your computer is offline.

Recent jobs

Connect a browser to see its jobs.

03 / INTEGRATE

Connect your frontend

Plain HTML, React, Vue, or a builder that supports custom JavaScript. The SDK encrypts, submits and retrieves.

SDK example

import { PublicQueue } from '@public-queue/sdk';

const queue = new PublicQueue(connection);
const job = await queue.submit({
  model: 'your-local-model',
  messages: [{ role: 'user', content: 'Hello!' }]
});

// Save job.id; resume after a refresh.
const result = await queue.wait(job.id);
console.log(result.text);

Install with npm install SDK_DOWNLOAD_URL. Or import /sdk.js from this service in a module script. Packages are not published to npm yet.

Private where it matters.

Prompt, model name and result are encrypted in the browser and on your device. The service sees job status, timing, size and routing metadata.

Verify the device key through the agent. Host your frontend independently if you need to protect against a malicious service operator changing browser code.

Built for asynchronous work.

Encrypted text can arrive progressively and be replayed after a refresh. Disable streaming if your runtime only returns complete responses. Interrupted inference may run again; completed jobs can be retrieved without re-running the model.