Documentation menu
Start here
IntroductionGetting startedWrite an agentProject anatomyUnderstand Ayjnt
Harness engineeringTwo runtimesHuman interfacesHow agents workHost bridgeAgent capabilities
Callable methodsState & SQLiteSessions & memorySchedulingWorkflowsDurable executionInter-agent RPCSub-agentsToolsInterfaces & integrations
Browser clientRouting & middlewareVoiceBrowser toolsMCPEmailObservabilityCLI
Command overviewnewdevrunbuildcompilemigratedeployAPI reference
AgentAgentClientWorkflow classesLocal & cloudMigrationsExamplesHuman interfaces
An agent is easier to trust and direct when its interface lives with its behavior and reflects its real state.
Browser: app.tsx
Co-locate a React interface beside any agent. Ayjnt generates a typed hook for the agent route, serves the app at the instance URL, and synchronizes durable state to connected clients.
Use the browser when the work benefits from visualization, ongoing
monitoring, rich input, collaboration, or an approval surface. A root
agents/app.tsx can provide an application-level home,
dashboard, or session list.
Terminal: cli.ts
A root CLI runs in Bun and receives typed handles to every agent and workflow. It can be a one-shot command, an interactive prompt, or a full-screen terminal application. Because it owns the local runtime, calls reach agents in-process.
Use the terminal when work starts from a repository, composes well in scripts, needs local files, or belongs in a developer's existing flow.
Use both
The interfaces are peers, not separate backends. A coding harness can run in a full-screen terminal while its root browser app shows every session, transcript, and usage total. Both interact with the same durable agent state.
A status dashboard, an approval queue, a chess board, and a coding terminal are all agent interfaces. Ayjnt does not force them into a chat box.