mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-25 00:16:29 +02:00
Add clearer app docs plus targeted desktop, CLI, web, and worker tests so cross-surface regressions are caught earlier and the repo is easier to navigate.
89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
# Architecture
|
|
|
|
This repository contains multiple Rowboat product surfaces. The quickest way to get oriented is to start from the table below instead of treating the repo as a single application.
|
|
|
|
## Product Map
|
|
|
|
| Surface | Path | Status | Purpose |
|
|
|---|---|---|---|
|
|
| Desktop app | `apps/x` | Primary | Local-first Electron app with Markdown memory, knowledge graph sync, and on-device workflows |
|
|
| Hosted web app | `apps/rowboat` | Active | Next.js platform with project-scoped agents, RAG, jobs, billing, and integrations |
|
|
| CLI/runtime | `apps/cli` | Active | Local HTTP runtime, workflow packaging, and npm-distributed `rowboatx` tooling |
|
|
| New frontend | `apps/rowboatx` | Active, evolving | Static Next.js UI that talks to the local runtime and shell-provided APIs |
|
|
| Docs | `apps/docs` | Active | Mintlify documentation site |
|
|
| Python SDK | `apps/python-sdk` | Supporting | Thin Python client for the hosted chat API |
|
|
| Experiments | `apps/experimental` | Experimental | Prototypes and one-off services not considered part of the core product |
|
|
|
|
## How The Pieces Fit Together
|
|
|
|
### `apps/x`
|
|
- Nested `pnpm` workspace for the desktop product.
|
|
- `apps/main` runs the Electron main process.
|
|
- `apps/preload` exposes the validated IPC bridge.
|
|
- `apps/renderer` contains the React UI.
|
|
- `packages/shared` holds shared schemas and IPC contracts.
|
|
- `packages/core` contains workspace, knowledge graph, agent, and integration logic.
|
|
|
|
### `apps/rowboat`
|
|
- Hosted or self-hosted Next.js application.
|
|
- Uses MongoDB, Redis, Qdrant, uploads storage, background workers, and external providers.
|
|
- Organized into `application`, `entities`, `infrastructure`, and `interface-adapters` layers.
|
|
|
|
### `apps/cli` + `apps/rowboatx`
|
|
- `apps/cli` provides the local API and runtime for runs, tools, permissions, and event streaming.
|
|
- `apps/rowboatx` is the browser UI that expects a runtime behind `/api/stream`, `/api/rowboat/*`, or a configured `window.config.apiBase`.
|
|
|
|
## Shared Runtime Concepts
|
|
|
|
- Local data lives under `~/.rowboat` by default.
|
|
- The desktop product stores knowledge as Markdown files and maintains Git-backed history for those notes.
|
|
- The hosted app uses project-scoped data stores instead of the desktop Markdown vault.
|
|
- Both the desktop and hosted surfaces rely on model/provider abstraction, tool calling, and external integrations.
|
|
|
|
## Recommended Entry Points
|
|
|
|
- Working on desktop memory, sync, or Electron UX: start in `apps/x`
|
|
- Working on hosted APIs, jobs, RAG, or project management: start in `apps/rowboat`
|
|
- Working on local runtime, SSE events, or packaging flows: start in `apps/cli`
|
|
- Working on the newer dashboard UI for the local runtime: start in `apps/rowboatx`
|
|
|
|
## Common Commands
|
|
|
|
### Desktop app
|
|
```bash
|
|
cd apps/x
|
|
pnpm install
|
|
npm run verify
|
|
npm run dev
|
|
npm run test
|
|
```
|
|
|
|
### Hosted web app
|
|
```bash
|
|
cd apps/rowboat
|
|
npm install
|
|
npm run verify
|
|
npm run dev
|
|
```
|
|
|
|
### CLI runtime
|
|
```bash
|
|
cd apps/cli
|
|
npm install
|
|
npm run verify
|
|
npm run server
|
|
```
|
|
|
|
### Local runtime frontend
|
|
```bash
|
|
cd apps/rowboatx
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
## Contributor Rules Of Thumb
|
|
|
|
- Prefer `apps/x` when the change is local-first or knowledge-vault oriented.
|
|
- Prefer `apps/rowboat` when the change requires server-side persistence, auth, billing, or hosted APIs.
|
|
- Treat `apps/experimental` as non-core unless you are intentionally working on a prototype.
|
|
- When adding documentation, update the README closest to the surface you changed.
|