Overview
What is AIaW
AI as Workspace — a Quasar 2 + Vue 3 + TypeScript AI client. The fork at lingion/AIaW is rooted at upstream NitroRCr/AIaW with cloud-sync features and the upstream demo services stripped (DexieDBURL = undefined in src/utils/config.ts, all web-service URLs come from .env.app at build time and can be replaced).
This document is written from the actual source tree, not from README.md or AIaW's official docs site. Every command, file path, and value below was read from ~/Desktop/blog/aiaw/.
Repo at a glance
| Field | Value | Source |
|---|---|---|
name / version | aiaw 2.0.8.9 | package.json |
| Upstream | NitroRCr/AIaW (productName "AI as Workspace") | package.json author |
| App id (Capacitor) | app.aiaw.glass | capacitor.config.ts |
| App id (Tauri) | app.aiaw | src-tauri/tauri.conf.json |
| Quasar mode list | SPA, PWA, Capacitor (Android, iOS), Tauri, SSR (in code, default SPA) | quasar.config.js |
| Boot files | i18n, unocss, global-components | quasar.config.js |
| Framework | Quasar 2.18 + Vue 3.5 + Pinia 2 + vue-router 4 + vue-i18n 11 | package.json |
| CSS pipeline | UnoCSS 0.62 (preset-rem-to-px) + Quasar SCSS | uno.config.ts, quasar.config.js |
| Build target (browser) | es2022, firefox115, chrome115, safari15; node node20 | quasar.config.js |
| Node engines | ^24 || ^22 || ^20 || ^18 | package.json |
| Package manager | pnpm (only sharp allowed in pnpm.onlyBuiltDependencies) | package.json |
| Dev port (SPA) | 9005; PWA 9006 | quasar.config.js |
Top-level layout (real paths)
aiaw/
|-- android/ Capacitor 7 Android project (Gradle, app.aiaw.glass)
|-- src/ Vue 3 SPA source (the main app)
| |-- boot/ i18n / UnoCSS / global-components setup
| |-- components/ reusable Vue SFCs (assistant-item, model-item, etc.)
| |-- composables/ use-call-api, use-dialog-chain, use-create-dialog, ...
| |-- css/ global SCSS
| |-- i18n/ en-US / zh-CN / zh-TW (per-language TS files)
| |-- layouts/ MainLayout + workspace drawer
| |-- pages/ route-level pages (WorkspacePage, SettingsPage, ...)
| |-- router/ routes.ts + index.ts
| |-- stores/ Pinia stores (workspaces, providers, plugins, ...)
| |-- utils/ db.ts, types.ts, values.ts, plugins/, platform-api.ts
| '-- views/ sub-route views (DialogView, AssistantView, ...)
|-- src-tauri/ Tauri 2 desktop wrapper
|-- src-capacitor/ Capacitor-specific bridge package.json
|-- src-pwa/ PWA manifest + service worker
|-- src-backend/ (empty stub - fork has no server)
|-- docs/ VitePress user docs (separate site)
|-- scripts/ sync-version, generate-app-icons, sync-android-shell, etc.
|-- public/ static assets (avatars, fonts, icons, json)
|-- resources/ OS-level icons (Android .png, Tauri .icns)
|-- quasar.config.js Quasar CLI config
|-- capacitor.config.ts Capacitor CLI config
|-- uno.config.ts UnoCSS config
|-- tsconfig.json
'-- .env.app upstream demo URLs (DEXIE/LITELLM/BUDGET/SEARXNG)
What is NOT in this fork
- No
src-backend/server code — the directory exists but is empty. The fork is client-only. - No cloud sync:
src/utils/config.tshard-codesexport const DexieDBURL = undefinedand the comment says "Cloud sync is stripped by default in this fork. Re-enable only if you explicitly wire your own Dexie Cloud URL." - No
.envfile is checked in..env.appships the upstream demo URLs but the fork ignores them at runtime because every service path (DocParse, SearXNG, CorsFetch, Litellm, Budget, Dexie) is gated behind the matching*BaseURLconst insrc/utils/config.ts, all of which returnundefinedunless the env var is set at build time. - No CI/CD customized for this fork.
License
Repo ships with upstream LICENSE (35 KB text file). Author is upstream NitroRCr; this fork is a personal deployment with cloud services stripped.
See also: Technical post: AIaW Mobile Fork — deep dive into 8 new files, Camera + LocalFs + Pyodide + PDF.js + Cerebras/MiniMax integration.