A browser stack
built for agents.
Dashboard & SDK
Launch, observe, take control, and return the session to your agent.
Vercel & Supabase
Authentication, projects, queues, durable resources, usage, and billing.
Browser worker
Isolated browser sessions with direct preview and input.
Session lifecycle
A signed-in user or project API key reserves a browser by the second. MASAKA selects available capacity, starts an isolated session, and only begins charging after the browser reports ready.
Each session has a fixed deadline. Explicit stop, timeout, startup failure, and worker interruption all run through the same settlement path so unused reserved credit is returned.
Live preview
Preview updates and interactive input travel directly between the current viewer and browser worker. Session metadata and usage are recorded asynchronously without placing the database in the interaction path.
Desktop pointer, keyboard, and wheel events and mobile touch or soft-keyboard events use one ordered input path. Taking control rotates the session capability; releasing control hands the browser back to the agent.
Durable profiles
A profile carries browser state into a later session. MASAKA exports cookies, local and session storage, IndexedDB records, and CacheStorage, then compresses and encrypts the bundle before saving it in private storage. Bundles are bound to both the profile and account.
Vault and credential values remain encrypted and are never returned as plaintext to the Dashboard. The worker may fill an approved value only on its exact configured hostname.
Network boundary
Browser workers expose no public host port. Navigation and configured HTTP proxies pass through DNS and resolved-IP validation that rejects loopback, link-local, private, reserved, and metadata destinations. Service-role and payment credentials stay outside the browser process.
Connect an agent
Create a project API key in Dashboard → API keys, keep it in trusted server code, and call the managed session API. Web and phone clients use the signed-in user’s short-lived access token instead of an API key.
import { MasakaBrowser } from './sdk/client.mjs';
const browser = new MasakaBrowser({
apiKey: process.env.MASAKA_API_KEY
});
const session = await browser.create({
url: 'https://duckduckgo.com/',
region: 'overseas',
maxSeconds: 300
});
try {
await browser.waitForReady(session.id);
await browser.type(session.id, 'browser agents');
await browser.press(session.id, 'Enter');
} finally {
await browser.stop(session.id);
}Regional capacity
Sessions, pools, apps, queues, and workers carry an explicit china or overseas region. Each region scales independently from demand while checking host CPU and memory pressure and preserving warm spare capacity. There is no manually configured fleet ceiling; account concurrency and available infrastructure remain separate controls.
A session runs up to the workspace limit shown at launch. Usage is metered after readiness and settled to exact elapsed seconds. Dashboard exposes runtime status, region, history, usage, audit, and payment state.