Studio
KyoubeAI opens dark, in the palette and type of the KyoubeAI website. The sidebar keeps what you use every day: a search field, one New task button, Home, Inbox, Tasks and Projects, a Build group (Data, Apps, Routines) and a Team roster where every agent has a face, a live status dot and a line saying what it is doing. Everything else is on the Workspace page at the bottom of the sidebar, and still one ⌘K away: All agents and the org chart, Audit, Timeline, Costs, Approvals, Skills, Artifacts, Connectors, Settings, and for owners and admins Plugins and Terminal.
Home replaces the top half of the stock dashboard. It shows how many things need you, a getting-started strip for new workspaces, Needs you (approvals, reviews, blocked tasks, agents in error), Your team right now and Latest updates, with the core's metrics and charts below. An agent's face comes from its name and the icon picked in its settings.
Each agent has a profile (/<company>/team/<agent>) with its character and status, whom it
reports to, an On duty switch, Chat and Assign task, what it is working on now with its
latest notes, recent work, the week's numbers, its skills and who it works with. Every link to an
agent opens the profile. Its Instructions, Skills and Settings tabs open the core's own agent views,
and Runs opens the agent's runs under Audit.
Studio has two parts, and neither edits the core: docker/theme/ (a build-time stylesheet, boot flag
and label renames, checked against every core bump) and the kyoube.studio plugin. Without the
plugin, the app falls back to the stock layout. docs/theme.md has the details.
Terminal
Company owners and admins see a Terminal card on the Workspace page. It opens a shell inside
the app container as the node user with HOME=/kyoubeai (the persisted volume), so claude login,
pi and hermes setup store credentials that survive restarts. Sessions are audited (open, close
and kill, never content), idle sessions close after 30 minutes, and a session survives page reloads:
use attach under Sessions in this company. Roles, timeouts and the shell are set under
Settings → Plugins → Kyoube Terminal.
The terminal is equivalent to shell access to the whole instance, including the database credentials
and every agent's tokens. Keep allowedRoles tight, and use it only over a private network or TLS.
The security model is in SECURITY.md.
Data
Every company gets its own isolated PostgreSQL schema in the kyoube database, separate from the
core's own database. People use it from the Data page. Agents use the REST routes under
/api/plugins/kyoube.apps/api/ with the PAPERCLIP_API_URL, PAPERCLIP_API_KEY and
PAPERCLIP_COMPANY_ID every run already carries, guided by the managed Kyoube Data skill. The same
operations exist as kyoube.apps:data_* tools, but the core (2026.831.1 through 2026.916.1) only hands
those to a run through an MCP gateway, which it creates only for agents that already have an MCP
connection, so the skill leads with the API.
Giving an agent access takes two steps. The Kyoube Data and Kyoube Apps skills reach every
company's skill library by themselves: kyoube ensure-plugins installs them into every company at
each container start, the first visit to a company's pages does the same, and a company created later
gets them on creation (kyoube setup and kyoube doctor confirm it). Then, for each agent, enable the
skills on its Skills tab and grant a level under Company Settings → Data access. Enabling a
skill only puts its text in front of the agent; nothing runs until a task calls for company data.
Access levels are none < read < write < schema. People inherit theirs from their company role, and
agents get an explicit level or the company default (none). Dropped tables and fields are kept for
30 days unless hard deletes are enabled. Every mutation is audited in kyoube_meta.audit and
summarised in the activity log.
Read-only SQL (data_sql_select, POST /sql) may reference only that company's own tables, by bare
name. Schema-qualified names, Postgres catalogs and information_schema are rejected before the query
runs, so introspection goes through data_describe_table. A query may also call only an allowlist of
pure built-in functions (aggregates, string, maths and date helpers, JSON and array helpers, window
functions), with no pg_* function and no cast to a reg* OID alias type.
The core's tool policies (Tools & Access) can require human approval for
kyoube.apps:data_drop_table and kyoube.apps:data_remove_field. Those policies only see calls that
go through the core's MCP gateway, though. An agent calling the REST routes is governed by its Kyoube
access level alone, so keep builders at write until you trust them with schema. Recommended
policies are in docs/governance.md.
Apps
Apps are single-file HTML applications that run inside the KyoubeAI UI (/<company>/app-artifact;
the sidebar entry is Apps) and use the company's Data tables through an injected window.kyoube
SDK. Agents build and publish them through the same REST routes, or the kyoube.apps:apps_* tools
where a gateway exists, guided by the managed Kyoube Apps skill. People can review an app's source
and versions, publish, and roll back from the app page.
A Content-Security-Policy blocks all network access from an app. Apps run at an opaque origin with no cookies and no storage, and they can never exceed the permissions of the person using them. The authoring guide is docs/apps.md.
Files
Every project has a working folder: the workspace configured on the project or, when there is none,
the folder the core creates the first time an agent works on one of its tasks
(/kyoubeai/instances/default/projects/<companyId>/<projectId>/_default). Agents run in that folder,
and what they write there is the project's work product. The Files tab on a project page, and the
Files link under each project in the sidebar, show that folder to people. You can open and edit
text files, preview Markdown, images and SVG, create files and folders, upload, download, rename and
delete.
An HTML file opens as the page it is, rendered in a sandboxed frame with no network, with the stylesheets, scripts and images it references from the same folder inlined. A View/Edit source toggle shows the markup. The listing and any open file refresh themselves every few seconds, so an agent's changes appear as they land. A save carries the modification time the file had when it was opened and is refused if an agent changed it since, with a choice to reload or overwrite. Symbolic links are listed but never followed, and no path can leave the project folder.
The same folder is one click away while you work with an agent. On any task that belongs to a project, a folder icon at the right end of the top bar (the one that reads Tasks › BAP-12 …) docks the project folder in a panel on the right of the screen, with the same browser and editor. The panel has no backdrop, so the chat stays usable beside it, and it follows you from task to task, switching to each task's project, until you close it.
Who may do what is a per-instance setting (Settings → Plugins → Kyoube Files). By default every
company role can browse and download, and everyone but viewer can change files. Files larger than
1 MiB open as download-only, and single uploads are capped at 5 MiB (the core's JSON body limit keeps
the ceiling at 7); larger transfers belong in the Terminal or with an agent. Every change is written to
the company's activity log with its path, never its content.