Ora is an IDE for AI agents. The shared Rust crates live in crates/,
executable Rust packages live in apps/, and the shared TypeScript packages
live in packages/. All Rust packages share the root Cargo workspace.
Task Workspace Files - read-only worktree browsing, bounded search, and native refresh
Application and Contracts Boundary — cross-crate ownership, contract shapes, and the handler set
Domain Models — entities, identifier newtypes, and categorical enums
Frontend Contract SDK — Rust-owned endpoint manifest, generation workflow, and transports
Gitlancer Architecture — typed Git CLI runtime
Workflow — definition management, draft/publish lifecycle, versioned snapshots, and run CRUD
- Desktop Runtime — Tauri commands, persistent paths, and configuration
- ACP Agent Runtime — provider supervision, session lifecycle, agent switching, and flow control
- Session MCP — ACP
mcpServersinjection, live refresh, prompt admission, and the boundary that keeps MCP out of Workspace files - Session History — Ora's own conversation record and the handoff between agents
- Runtime Logging — configuration, JSON event contract, and Git command logging
- Database Migrations — migration catalog and reconciliation model
- Database Repositories — SQLite adapters, pooling, and soft deletion
- Task Worktrees — workspace modes and backend-owned worktree lifecycle
Install the Deno version pinned in .deno-version, Rust (see rust-toolchain.toml), Task, Git, ripgrep,
and the Tauri system dependencies for your platform. Node.js and pnpm are not
required. Run task install:frontend to install the locked npm dependencies
with Deno and configure Git hooks.
See AGENTS.md for code conventions. Common commands:
task test— full lint and test suite for frontend and Rust workspace packages (long-running)task lint— all lint taskstask export-contracts— regenerate frontend contracts and plugin protocol bindings from Rusttask check:contracts— verify generated contracts without rewriting the checkout; LF and CRLF line endings are treated as equivalent while other content changes still fail
.deno-version is the Deno release pin consumed by CI and sidecar setup. Keep
package.json's engines.deno in sync when changing it; deno task check:toolchain
checks both the installed runtime and this declaration. The check runs before
installation, tooling checks, and packaging. Sidecar setup verifies the content and native version of existing Deno and ripgrep
binaries before reuse; see sidecar download verification. DENO_VERSION may
only repeat the shared version, not override it.
The root package.json owns the workspace TypeScript version. All packages use
its tsc and compiler API; child packages must not pin their own compiler.
Deno's deno check uses the compiler bundled with the pinned Deno release,
which currently matches the workspace compiler. Third-party tools such as
ts-to-zod still depend on TypeScript 5 APIs; those transitive dependencies
retain their supported versions instead of being forced across a major boundary.