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 for detailed documentation and examples.
For complete details about the seed system architecture, app modes, and configuration options, see Seed System.
For issues or questions, please open an issue on GitHub.