This guide explains how to set up the WE workspace for development or production builds.
- Node.js 18+
- pnpm (
npm install -g pnpm) - Rust and Cargo (for AD4M and Tauri)
- Yarn (for Flux)
# Clone all required repositories
git clone https://github.com/your-org/we.git
git clone https://github.com/your-org/flux.git
git clone https://github.com/your-org/ad4m.git
# Your directory structure should look like:
# Coding/
# ├── we/
# ├── flux/
# └── ad4m/# Build AD4M executor (required for Electron and Tauri)
cd ad4m
cargo build --release
# This creates: target/release/ad4m-executor (~350MB)
# Build Flux app (required for all platforms)
cd ../flux/app
yarn install
yarn build
# This creates: dist/ folder with built appcd ../../we
nano we-seed.json # Or use your favorite editorEdit the paths in we-seed.json:
{
"ad4m": {
"repoPath": "../ad4m", // Path to AD4M repo
"executorPath": "../ad4m/target/release/ad4m-executor"
},
"apps": [
{
"id": "flux",
"paths": {
"projectRoot": "../flux/app",
"dist": "../flux/app/dist" // Path to built Flux app
}
}
]
}Note: All paths are relative to the we/ directory.
# From the we/ directory
pnpm setupThis single command:
- ✅ Installs all dependencies
- ✅ Validates your seed configuration
- ✅ Checks external dependencies exist
- ✅ Builds all internal WE packages
- ✅ Generates platform-specific configurations
# Choose your platform:
pnpm dev:web # Web development server
pnpm dev:electron # Electron development mode
pnpm dev:tauri # Tauri development mode# Build specific platform
pnpm build:web
pnpm build:electron # Creates AppImage in apps/we-electron/release/
pnpm build:tauri # Creates AppImage in apps/we-tauri/src-tauri/target/release/bundle/
# Or build everything
pnpm build:all| Command | Description |
|---|---|
pnpm setup |
Complete workspace setup (run after clone or seed changes) |
pnpm validate |
Validate seed file configuration |
pnpm dev |
Start web dev (same as dev:web) |
pnpm dev:web |
Start web development server |
pnpm dev:electron |
Start Electron in dev mode |
pnpm dev:tauri |
Start Tauri in dev mode |
pnpm build |
Build all packages |
pnpm build:web |
Build web distribution |
pnpm build:electron |
Build Electron AppImage |
pnpm build:tauri |
Build Tauri AppImage |
pnpm build:all |
Build all distributions |
You can also run commands directly from each app directory:
# Web
cd apps/we-web
pnpm dev
pnpm build
# Electron
cd apps/we-electron
pnpm electron:dev
pnpm electron:build
# Tauri
cd apps/we-tauri
pnpm tauri:dev
pnpm tauri:buildThe we-seed.json file is the single source of truth for all configuration:
- App definitions (name, routes, paths)
- Port assignments
- AD4M paths
- Build resources
All platform-specific files are auto-generated from this seed file:
Electron:
apps/we-electron/electron/seed-servers.jsapps/we-electron/electron/seed-port-map.jsonapps/we-electron/electron/seed-extra-resources.jsonapps/we-electron/electron-builder.config.js
Tauri:
apps/we-tauri/src-tauri/Cargo.toml(from template)apps/we-tauri/src-tauri/src/generated/seed_servers.rsapps/we-tauri/src-tauri/src/generated/seed-port-map.jsonapps/we-tauri/src/generated/seed-port-map.json
Never edit generated files directly - they are overwritten on every build.
Build AD4M first:
cd ad4m
cargo build --releaseBuild Flux first:
cd flux/app
yarn install
yarn buildRun the generator:
cd apps/we-tauri
node scripts/generate-seed-config.cjsOr just run pnpm setup from the root.
Check your paths:
pnpm validateThis will show exactly what's missing or incorrect.
we/
├── we-seed.json # Single source of truth
├── package.json # Root orchestrator
├── scripts/
│ ├── setup-workspace.cjs # Setup automation
│ └── validate-seed.cjs # Validation tool
├── packages/
│ ├── app-framework/ # Core framework
│ └── cli/ # Build tooling
└── apps/
├── we-web/ # Web app
├── we-electron/ # Electron app
│ ├── electron/
│ └── scripts/
│ └── generate-seed-config.cjs
└── we-tauri/ # Tauri app
├── src-tauri/
│ ├── Cargo.toml.template
│ └── src/generated/ # Auto-generated (gitignored)
└── scripts/
└── generate-seed-config.cjs
-
Initial Setup (once):
# Build external deps cd ad4m && cargo build --release cd ../flux/app && yarn install && yarn build # Setup WE cd ../../we pnpm install nano we-seed.json # Configure paths pnpm setup
-
Daily Development:
cd we pnpm dev:tauri # or electron, or web
-
After Pulling Changes:
pnpm install # Update dependencies pnpm setup # Regenerate configs
-
After Changing Seed File:
pnpm setup # Regenerate all configs
- Web development doesn't require AD4M or Flux to be built
- Electron and Tauri need both AD4M executor and app dist folders
- Run
pnpm validateto check if everything is configured correctly - Run
pnpm setupafter any seed file changes - All paths in seed file are relative to the
we/directory
You can fully customize the launcher shell (boot screen, app settings) via the seed file. See LAUNCHER-UI-CUSTOMIZATION.md for detailed documentation and examples.
For complete details about the seed system architecture, app modes, and configuration options, see SEED-SYSTEM.md.
For issues or questions, please open an issue on GitHub.