Design stance
VibeX’s object model and UI follow a small set of stable rules. They apply across agents, conversations, workspaces, and remote connections.
Many agents, one pipeline
Claude Code, Codex, OpenCode, and other registry agents share install, probe, authentication, and new-session paths. Switching agents switches the identity in the list. The application binary stays the same. Each agent’s login, keys, model catalog, and native plugins stay in that agent’s official directory. Claude Code’s config authority is ~/.claude. VibeX reads that directory, starts profile-declared official actions, and attaches the ACP session to one timeline. See ACP and the native agent.
Conversations, delegation mentions, and permission records use a stable agent kind (claude_code, codex). Display names can be localized. The kind stays.
One in-flight turn per conversation
A conversation runs at most one turn at a time. Parallelism is multiple conversations. When uncommitted files must stay isolated, bind each conversation to a different worktree.
Merge, push, and publish happen in the Git panel. Approving a file write releases that one tool call. Commit and push are later steps.
Scheduling and landing are separate
Kanban shows many conversations and schedules work. Workspace shows files, Git, terminal, and browser for the bound tree. The two layouts are saved separately under Settings → Appearance. Dragging a conversation panel changes placement. Kanban still schedules; Workspace still lands.
One Host, one set of facts
Projects, conversation events, plugin activation generations, and automation runs take the current Host data directory as authority. Desktop, WebUI, workstation, and companion read the same objects through Application Core. Every client reads the Host event log. The turn state machine lives in Core. See One Host and Application Core.
Honest capabilities
Session auxiliaries (usage, plan, goals, compaction, draft, find) render facts the agent or the user actually supplied. Missing stays missing. Unknown stays empty. Only capabilities the agent declared appear as controls. ACP capability bits, built-in profile declarations, and plugin enablement jointly decide which entries appear.

