@malv/cli
v1.2.0
Published
Development tooling for MALV
Maintainers
Readme
@malv/cli
Command-line interface for MALV projects. Provides commands for development, environment configuration, validation, log viewing, and registry authentication.
Commands
malv create
Scaffolds a new MALV project with best practices built-in.
malv create [project-name]What It Does:
- Prompts for project name and location (or uses provided name)
- Scaffolds project from templates (monorepo root, website, example app)
- Optionally installs dependencies
- Shows next steps
Usage:
# Interactive mode
malv create
# With project name
malv create my-projectAfter Scaffolding:
cd my-project
yarn install # if not done during setup
yarn dev:website --project my-projectThis will:
- Authenticate you with Google OAuth
- Create/select your website
- Let you manage installed apps
- Start the development server
Note: This command uses npx create-malv under the hood. You can also run npm create malv@latest or yarn create malv directly.
malv dev
Starts the development server for all apps and web projects in malv.json.
malv dev [--verbose|-v] [--cloudflare]Options:
--verbose,-v- Show detailed output from all processes--cloudflare- Use Cloudflare Workers runtime instead of Node.js (requires Wrangler)
Runtime Modes:
By default, malv dev runs apps using Node.js, which requires no additional setup. If you need Cloudflare-specific features (like the AI binding), use the --cloudflare flag to run apps with Wrangler.
# Default: Node.js runtime (no Wrangler needed)
malv dev
# Cloudflare Workers runtime (requires wrangler login)
malv dev --cloudflareFlow:
- Checks that all registry apps (semver versions) are downloaded to
malv_systems/ - Validates environment configuration for each app against its
environment.json - Allocates ports dynamically for each app
- Starts
malv-devfor each app with its.envfile - Starts Vite dev server for each web project (from
config.web) - Displays live service status with health monitoring
Environment Injection for Web Projects:
VITE_MALV_APPS_URL- Apps CDN URL (http://localhost:59459/apps)VITE_MALV_STORAGE_URL- Storage service URLAPP_<APP_NAME>/VITE_APP_<APP_NAME>- URL for each running app
malv env
Interactive environment variable configuration.
malv env [app-name] [--production|-p] [--status|-s]Options:
--production,-p- Configure production environment (default: dev)--status,-s- Show detailed status of all variablesapp-name- Configure a specific app directly (e.g.,malv env @malv/auth)
Examples:
malv env # Interactive mode for dev
malv env --production # Interactive mode for production
malv env --status # Show all vars and their status
malv env @malv/gmail # Configure specific app
malv env @malv/gmail -p # Configure specific app for productionmalv ai
Manage AI API key for info summary generation and semantic search.
malv ai <command> [api-key]Commands:
set <api-key>- Store an API key (auto-detects OpenAI or Anthropic)check- Check if a key is configured (alias:status)remove- Remove the stored API key (aliases:rm,delete)
Provider Detection: The command automatically detects the provider based on key format:
- Keys starting with
sk-ant-→ Anthropic - Other keys → OpenAI
Environment Variable Alternative:
MALV_AI_API_KEY- Can be used instead ofmalv ai set- Environment variable takes precedence over config file
Examples:
malv ai set sk-... # Store OpenAI API key
malv ai set sk-ant-... # Store Anthropic API key
malv ai check # Check current key status
malv ai remove # Remove stored API keyUse Case:
The AI API key is used for generating summaries of /info files in apps. When an app contains static reference data (CSVs, JSONs), the summary generator uses this key to create semantic descriptions that enable AI-powered data discovery.
malv logs
Unified log viewer for all running MALV dev workers.
malv logsFeatures:
- Tails the shared log file (
~/.malv/dev-logs.jsonl) - Groups tool executions with their results
- Color-codes different apps
- Interactive controls:
c- Clear logst- Toggle line truncationCtrl+C- Exit
malv logs-html
Generate HTML from logs and copy to clipboard for sharing.
malv logs-html [--infra|-i]Options:
--infra,-i- Generate HTML from infrastructure server logs instead of app worker logs
Features:
- Reads the log file (
~/.malv/dev-logs.jsonlor~/.malv/infra-logs.jsonl) - Generates styled HTML with syntax highlighting
- Groups tool executions with their results
- Color-codes different apps/services
- Copies directly to system clipboard
Output:
$ malv logs-html
✓ Read 245 log entries
✓ Parsed 245 log entries
✓ Generated HTML (18.5 KB)
✓ HTML copied to clipboardmalv logs-open
Open the log file location in Finder/Explorer.
malv logs-open [--infra|-i]Options:
--infra,-i- Open infrastructure logs location instead of app worker logs
Behavior:
- macOS: Reveals file in Finder using
open -R - Windows: Opens Explorer with file selected
- Linux: Opens parent directory with
xdg-open
malv build
Builds MALV apps/systems with rollup and generates type declarations.
malv build [target] [options]Targets:
core- Build app core (Rollup + TypeScript declarations) - defaultnode- Build standalone Node.js server for deployment
Options:
--filter=<app>- Build/include specific app(s) - can be specified multiple times--all- Build all workspace apps from malv.json--skip-gen- Skip generation step (types, exports, tools)--output=<dir>- Output directory for node build (default: dist)--resolve, -r- Resolve workspace:* dependencies to actual versions (node target)--force- Skip npm verification for resolved dependencies (node target)--include-infrastructure- Embed infrastructure services for self-contained deployment (Mode 3)--help, -h- Show help
Usage (core target):
# From within an app directory - builds that app
cd packages/malv-apps/auth
malv build
# From project root - builds all workspace:* apps
malv build --all
# Build a specific app by name
malv build --filter=@malv/auth
# Skip generation (useful for quick rebuilds)
malv build --skip-genUsage (node target):
# Single app server (from app folder)
cd packages/malv-apps/auth
malv build node
# Multi-app server (from project root)
malv build node --all # All workspace apps
malv build node --filter=@malv/auth --filter=@malv/conversation
# With workspace dependency resolution
malv build node --all --resolve
# Custom output directory
malv build node --all --output=./server
# Self-contained server with embedded infrastructure (Mode 3)
malv build node --all --include-infrastructureBehavior:
malv build/malv build core: Builds app core (Rollup + TypeScript declarations)malv build node: Builds deployable Node.js server- From app folder: Single-app server
- From project root with
--allor--filter: Multi-app server
Node.js Server Output:
Single-app server (malv build node from app folder):
dist/
├── server.js # HTTP server
├── handler.js # Request routing
├── tools.js # Bundled tool implementations
├── package.json
├── .env.example
└── config/
└── tools.json, tokens.json, etc.Multi-app server (malv build node --all from project root):
dist/
├── server.js # HTTP server with app routing
├── capabilities.js # HTTP-based capability factory
├── apps/
│ ├── manifest.json # List of included apps
│ ├── @malv-auth/
│ │ ├── handler.js
│ │ ├── tools.js
│ │ └── config/
│ └── @malv-conversation/
│ └── ...
├── package.json # Combined dependencies
└── .env.exampleSelf-contained server (malv build node --all --include-infrastructure):
dist/
├── server.js # Monolith server (initializes infrastructure)
├── capabilities.js # Embedded capability factory (in-process services)
├── infrastructure/ # Bundled infrastructure services
│ ├── services.js # All service classes
│ ├── file-bucket.js # File storage abstraction
│ ├── token-signer.js # Ed25519 signing
│ └── security-key.js # Security key generation
├── apps/
│ ├── manifest.json # { mode: "monolith", infrastructure: true, ... }
│ ├── @malv-auth/
│ │ ├── handler.js
│ │ ├── tools.js
│ │ └── config/
│ └── ...
├── data/ # Created at runtime
│ ├── storage/
│ ├── keys/
│ ├── embeddings/
│ └── queue/
├── package.json # Includes infrastructure dependencies
└── .env.example # Minimal config (PORT, DATA_DIR, AI_API_KEY)Multi-App Server Routing:
Requests are routed by app name:
GET /health- Server health checkGET /apps- List all hosted appsPOST /apps/auth/execute- Execute tool in @malv/authPOST /apps/@malv/auth/execute- Also works with full app namePOST /apps/conversation/execute-batch- Batch execute in @malv/conversation
Rollup config validation:
The command warns if rollup.config.js is missing the required typescript plugin configuration:
typescript({
tsconfigOverride: {
compilerOptions: {
declaration: false,
declarationMap: false,
},
}
})This ensures type declarations for bundled dependencies aren't included in the output.
See NODE_BUILD_PLAN.md for detailed documentation on Node.js build modes.
malv generate
Runs code generators to create TypeScript types from JSON schemas.
malv generate [subcommand]Subcommands:
| Command | Description |
|---------|-------------|
| all | Run all generators (default) |
| types | Generate tool input/output types from tools.json |
| tokens | Generate TokenPayloads.ts from tokens.json |
| events | Generate EventHandlerTypes.ts from events.json |
| env | Generate Environment.ts from environment.json |
| exports | Generate package.json exports from tools/objects |
| objects | Generate object type definitions from objects.json |
| tools | Generate tools.json from tool TypeScript files |
| icons | Generate icon scaffolding from objects.json |
| renders | Generate web renderer scaffolding from objects.json |
Usage:
# Run all generators
malv generate
# Run specific generator
malv generate tokens
malv generate types
malv generate objectsWhen to use:
Run generators after modifying:
tokens.json→malv generate tokensevents.json→malv generate eventstools.jsonor tool files →malv generate typesobjects.json→malv generate objectsenvironment.json→malv generate env
Note: malv build automatically runs all generators unless --skip-gen is specified.
malv validate
Runs TypeScript validation on all apps in malv.json.
malv validateFeatures:
- Runs
tsc --noEmiton each app in parallel - Shows per-app error counts
- Displays detailed errors for failing apps
- Exits with code 1 if any app has errors
malv overview
Displays a formatted overview of storage paths, tokens, tools, and objects for apps.
malv overview [options] [@app-name...]Section Filter Options:
--storage,-s- Show only storage paths--tokens,-t- Show only token definitions--tools,-T- Show only tool definitions--objects,-o- Show only object definitions
App Filter Options:
@app-name- Filter to specific apps (e.g.,@malv/auth)--filter,-f- Explicit filter flag followed by app names
Behavior:
- Primary: Searches for
malv.jsonin current directory and parent directories, shows all apps (or filtered apps) - Fallback: If no
malv.jsonfound, checks if current folder is an app (hasstorage.json,tokens.json,tools.json, orobjects.json) and shows that app only
Examples:
malv overview # Show all info for all apps
malv overview --storage # Show only storage paths
malv overview --tokens # Show only token definitions
malv overview --tools # Show only tools
malv overview --objects # Show only objects
# Filter to specific apps
malv overview @malv/auth # Show only @malv/auth
malv overview @malv/auth @malv/research # Show multiple specific apps
malv overview --filter @malv/auth # Explicit filter syntax
# Combine section and app filters
malv overview --tokens @malv/auth # Show tokens for @malv/auth only
# From within an app folder
cd packages/malv-apps/auth
malv overview # Show overview for @malv/auth onlyOutput includes:
- App description from package.json
- Storage Paths: Permission-enforced storage paths with read/write indicators and template variables
- Tokens: Token names with state, description, and payload fields
- Tools: Tool names with descriptions (hidden tools shown as count)
- Objects: Object definitions with title, renders, capabilities, storage location, and metadata fields
malv install
Downloads and installs systems from the MALV registry.
malv install [@system[@version]...]Options:
--force,-f- Re-download even if version exists locally--dry-run- Show what would be installed without downloading--verbose,-v- Show detailed progress
Usage:
# Install all registry systems from malv.json
malv install
# Install a specific system (latest version)
malv install @malv/gmail
# Install with specific version
malv install @malv/[email protected]
# Install with semver range
malv install @malv/gmail@^1.0.0
# Install multiple systems
malv install @malv/gmail @malv/calendar @acme/custom-tool
# Check what would be installed
malv install --dry-run
# Force reinstall
malv install @malv/gmail --forceVersion Resolution:
| Format | Example | Resolution |
|--------|---------|------------|
| Exact | "1.2.3" | Installs exactly 1.2.3 |
| Caret | "^1.2.0" | Latest compatible (>=1.2.0 <2.0.0) |
| Tilde | "~1.2.0" | Latest patch (>=1.2.0 <1.3.0) |
| Latest | "latest" | Most recent published version |
| Range | ">=1.0.0 <2.0.0" | Latest within range |
Flow:
- Parses CLI arguments or reads
malv.jsonfor registry apps - Checks local cache (
malv_systems/) for existing installations - Fetches system metadata from registry for version resolution
- Resolves semver ranges to exact versions
- Downloads files in parallel with integrity verification
- Updates
malv.lockwith resolved versions
Lock File (malv.lock):
The install command creates/updates a lock file that records exact installed versions:
{
"lockfileVersion": 1,
"generatedAt": 1703000000000,
"systems": {
"@malv/gmail": {
"version": "1.2.3",
"resolved": "https://registry.malv.ai/install/@malv/gmail?version=1.2.3",
"integrity": "sha256-...",
"files": {
"package.json": "sha256-...",
"tools.json": "sha256-..."
}
}
}
}Private Systems:
For private systems, you must be logged in (malv login) and be a member of the organization.
malv uninstall
Remove installed systems from the local cache.
malv uninstall @malv/gmail # Remove all versions
malv uninstall @malv/[email protected] # Remove specific version
malv uninstall @malv/gmail --dry-run # Preview removalOptions:
--dry-run- Show what would be removed without deleting
Removes systems from malv_systems/ and updates malv.lock. Does not modify malv.json.
malv upgrade
Upgrade apps in malv.json to their latest versions from the registry.
malv upgrade [options] [@app-name...]Options:
--dry-run- Show what would be upgraded without making changes--verbose,-v- Show detailed progress--help,-h- Show help message
Usage:
# Upgrade all registry apps to latest
malv upgrade
# Preview what would be upgraded
malv upgrade --dry-run
# Upgrade specific app
malv upgrade @malv/gmail
# Upgrade multiple specific apps
malv upgrade @malv/gmail @acme/toolFlow:
- Reads
malv.jsonand identifies registry apps (semver versions) - Queries the registry for the latest version of each app
- Compares current versions with latest available
- Updates
malv.jsonwith the new versions - Prompts to run
malv installto download the updated versions
Output:
$ malv upgrade
Checking for updates...
✓ @malv/gmail ^1.0.0 → 1.2.3
✓ @acme/tool 1.0.0 → 2.0.0
ℹ @malv/auth (already on latest)
Updating malv.json...
✓ Upgraded 2 app(s)
@malv/gmail: ^1.0.0 → 1.2.3
@acme/tool: 1.0.0 → 2.0.0
Run 'malv install' to download the new versions.Notes:
- Only affects registry apps (semver versions). Workspace and local path apps are skipped.
- Apps using
"latest"tag are skipped since they always resolve to the newest version. - For private apps, you must be logged in (
malv login).
malv update
Update @malv/cli to the latest version.
malv update [options]Options:
--status,-s- Show current version and update status--disable,-d- Disable automatic update checks on startup--enable,-e- Enable automatic update checks on startup--help,-h- Show help message
Usage:
# Update to latest version
malv update
# Check current version and update status
malv update --status
# Disable update notifications
malv update --disable
# Re-enable update notifications
malv update --enableAutomatic Update Checks:
By default, the CLI performs a non-blocking background check for updates on every command. If a newer version is available, a notification is displayed after the command completes.
- Checks are cached for 24 hours to minimize network requests
- Update checks never block or slow down CLI operation
- Failures are silent - no error messages if network is unavailable
- Use
malv update --disableto stop automatic checks
Output:
$ malv update
Checking for updates...
Updated @malv/cli: 1.0.0 -> 1.1.0Update Notification:
$ malv env
... (command output) ...
──────────────────────────────────────────────────
Update available: 1.0.0 -> 1.1.0
Run malv update to update
──────────────────────────────────────────────────See AUTO_UPDATE.md for detailed documentation on the auto-update system architecture, caching behavior, and troubleshooting.
malv publish
Publishes a system to the MALV registry.
malv publish [options]Options:
--patch- Bump patch version before publishing (1.0.0 → 1.0.1)--minor- Bump minor version before publishing (1.0.0 → 1.1.0)--major- Bump major version before publishing (1.0.0 → 2.0.0)--resolve, -r- Resolveworkspace:*dependencies to actual versions--force- Skip npm verification for resolved dependencies (use with--resolve)--dry-run- Show what would be published without uploading--access <type>- Set package access:public(default) orprivate
Usage:
# From within an app directory
cd packages/malv-apps/gmail
malv publish
# With version bump
malv publish --patch # 1.0.0 → 1.0.1
malv publish --minor # 1.0.0 → 1.1.0
malv publish --major # 1.0.0 → 2.0.0
# Preview what would be published
malv publish --dry-run
# Publish as private
malv publish --access privateRequirements:
- Must be run from within a MALV app directory
- App must be built first (
yarn build) - thedist/directory is required - Must have
package.jsonwith valid@org/nameformat - Must have
tools.json - Must be logged in (
malv login) - Must have publish permission in the organization
What gets published:
- Required:
package.json,tools.json,dist/ - Optional (if present):
tokens.json,storage.json,events.json,objects.json,environment.json - Optional directories (if present):
embeddings/,objects/,perception/,examples/
Workspace dependency resolution:
If your package.json contains workspace:* dependencies, use the --resolve flag:
malv publish --resolve
# or
malv publish -rThis resolves workspace:* to actual versions (e.g., ^1.2.3), verifies they exist on npm, and restores your package.json after publishing.
For dependencies not on npm, use the internal field to bundle them:
{
"dependencies": {
"@malv/types": "workspace:*",
"@myorg/private-utils": "workspace:*"
},
"internal": ["@myorg/private-utils"]
}Then run malv build && malv publish -r.
See RESOLVE_INFO.md for detailed documentation on workspace resolution, internal dependencies, and troubleshooting.
Package.json cleanup:
When publishing, these fields are automatically stripped:
scripts- Build scripts not neededinternal- Only used during build/publish
Note: devDependencies are preserved because they contain runtime dependencies like @malv/runtime that are needed when running the app with malv dev. Workspace versions in devDependencies are resolved just like regular dependencies.
Output:
$ malv publish
Publishing @malv/[email protected]...
Validating...
✓ package.json
✓ tools.json (3 tools)
✓ tokens.json (1 tokens)
✓ dist/ (12 files)
✓ workspace dependencies (2 resolved)
@malv/types: workspace:* → 1.2.3
@malv/utils: workspace:* → 0.5.0
✓ Received 15 signed URLs
Uploading 15 files (245 KB)...
✓ package.json
✓ tools.json
...
✓ Published successfully
✓ @malv/[email protected] published!
Install with:
malv install @malv/[email protected]See PUBLISH_INFO.md for detailed documentation on the publish flow, file requirements, and troubleshooting.
malv login
Authenticate with the MALV registry using browser-based OAuth. Required for publishing systems and installing private systems.
malv loginOutput:
$ malv login
Opening browser for authentication...
Waiting for authentication... (press Ctrl+C to cancel)
✓ Logged in as [email protected]
Organizations: @malv, @acme
Token saved to ~/.malv/auth.jsonSee LOGIN_INFO.md for detailed documentation on the authentication flow, when auth is required, and troubleshooting.
malv whoami
Shows the currently logged in user.
malv whoamiOutput:
Logged in as [email protected]
User ID: usr_abc123
Name: John Doe
Organizations:
@malv (member)
@acme (owner)
Token expires in 28 days.malv logout
Removes the stored authentication token.
malv logoutOutput:
✓ Logged out from [email protected]
Token removed from ~/.malv/auth.jsonmalv org
Manage organizations - create, list members, invite users, and control access.
malv org <command> [args] [options]Commands:
| Command | Description |
|---------|-------------|
| create <name> | Create a new organization |
| list | List your organizations |
| info <name> | Show organization details |
| systems <name> | List organization's published systems |
| users <name> | List organization members |
| invite <name> <email> | Invite a user to an organization |
| join <name> | Accept a pending invitation |
| leave <name> | Leave an organization |
| kick <name> [user-id] | Remove a member |
| role <name> <user-id> <role> | Change a member's role |
Roles: owner, admin, developer, member
Examples:
# Create an organization
malv org create mycompany
# List your organizations
malv org list
# Invite a user as admin
malv org invite mycompany [email protected] --role admin
# Accept an invitation
malv org join mycompany
# Change a member's role
malv org role mycompany usr_abc123 developer
# Remove a member (interactive picker)
malv org kick mycompany
# Leave an organization
malv org leave mycompany --yesSee ORG_INFO.md for detailed documentation on organization management, role permissions, and common workflows.
Configuration
malv.json
interface Config {
domain?: string;
apps: Record<string, AppConfig>;
web: string[]; // Paths to web projects (relative to malv.json)
}
type AppConfig = string | { version: string; route?: string };Example:
{
"domain": "example.com",
"apps": {
"@malv/auth": "workspace:*",
"@malv/gmail": { "version": "workspace:*", "route": "gmail" }
},
"web": ["packages/web"]
}Version Formats
| Format | Description | Example |
|--------|-------------|---------|
| Semver | Registry app | "1.0.0", "^1.2.0" |
| workspace:* | Find in workspace | Auto-discovers app folder |
| workspace:path | Specific workspace path | "workspace:apps/auth" |
| ./path | Local path | "./local/my-app" |
| git:url | Git repository | "git:https://github.com/..." |
Storage Structure
Project Directory
project/
├── malv.json
├── malv.lock # Lock file with resolved versions
├── malv_systems/ # Downloaded registry apps (workspace-compatible)
│ ├── @scope-name/ # e.g., @malv-gmail (dash instead of slash)
│ │ ├── package.json
│ │ ├── tools.json
│ │ └── dist/
│ └── .tmp/ # Temp directory for atomic installs
└── .malv/
├── dev/ # Dev environment files
│ └── .env.{app-name}
├── production/ # Production environment files
│ └── .env.{app-name}
├── running-apps.json # Registry of running apps (for health checks)
└── dev-logs.jsonl # Shared log fileThe malv_systems/ directory can be added to your package.json workspaces to enable yarn install to install dependencies for each system:
{
"workspaces": ["packages/*", "malv_systems/*"]
}This is important because systems have devDependencies like @malv/runtime that are needed when running malv dev.
The .malv/ directory should be added to .gitignore as it contains secrets. The malv.lock file should be committed to version control for reproducible installs.
User Directory (~/.malv/)
~/.malv/
├── auth.json # Authentication token (from malv login)
├── ai-config.json # AI API key configuration (from malv ai set)
├── update-config.json # Update preferences (from malv update --disable/--enable)
└── update-check.json # Cached update check resultsThe auth.json and ai-config.json files contain sensitive credentials and are created with restricted permissions (600). The update config and cache files store update preferences and check results.
Directory Structure
src/
├── bin/ # CLI entry points
│ ├── malv.ts # Main CLI router
│ ├── ai.ts # AI API key management
│ ├── dev.ts # Development server
│ ├── env.ts # Environment configuration
│ ├── install.ts # Install systems from registry
│ ├── publish.ts # Publish systems to registry
│ ├── update.ts # Self-update command
│ ├── upgrade.ts # Upgrade apps in malv.json
│ ├── org.ts # Organization management router
│ ├── logs.ts # Log viewer
│ ├── logs-html.ts # Generate HTML from logs
│ ├── logs-open.ts # Open log file location
│ ├── validate.ts # TypeScript validation
│ ├── login.ts # Registry authentication
│ ├── logout.ts # Remove authentication
│ └── whoami.ts # Show current user
├── types/ # TypeScript interfaces
│ ├── Config.ts
│ ├── AppConfig.ts
│ ├── AppEnvStatus.ts
│ ├── Auth.ts # Authentication types
│ ├── LockFile.ts # Lock file types
│ ├── Org.ts # Organization types
│ ├── UpdateConfig.ts # Update configuration types
│ └── env/
└── utility/ # Helper functions
├── findConfig.ts
├── findApp.ts
├── findAvailablePort.ts
├── runMalvDev.ts
├── runWebDev.ts
├── semver.ts # Semver parsing and resolution
├── env/
├── auth/ # Authentication utilities
│ ├── getAuthToken.ts
│ ├── saveAuthToken.ts
│ ├── clearAuthToken.ts
│ ├── isTokenExpired.ts
│ └── startAuthServer.ts
├── install/ # Install utilities
│ ├── cache.ts # Local cache management
│ ├── download.ts # File download and integrity
│ ├── lockFile.ts # Lock file management
│ └── resolve.ts # Version resolution
├── org/ # Organization utilities
│ ├── create.ts # Create organization
│ ├── list.ts # List organizations
│ ├── info.ts # Organization details
│ ├── systems.ts # List org systems
│ ├── users.ts # List org members
│ ├── invite.ts # Invite user
│ ├── join.ts # Accept invitation
│ ├── leave.ts # Leave organization
│ ├── kick.ts # Remove member
│ └── role.ts # Change member role
├── build/ # Build utilities
│ ├── node.ts # Single-app Node.js server build
│ └── node-multi.ts # Multi-app Node.js server build
├── publish/ # Publish utilities
│ ├── validateApp.ts # App validation
│ ├── collectFiles.ts # File collection
│ ├── upload.ts # File upload
│ ├── bumpVersion.ts # Version bumping
│ └── formatBytes.ts # Size formatting
├── update/ # Update utilities
│ ├── checkForUpdate.ts # Version checking logic
│ ├── performUpdate.ts # Update execution
│ ├── getInstalledVersion.ts # Read local package version
│ ├── getLatestVersion.ts # Fetch latest from npm
│ ├── updateConfig.ts # Config management
│ └── notifyUpdate.ts # Display update notification
└── registry/ # Registry API client
└── client.tsRelated Documentation
Detailed documentation for specific features is available in the info/ directory:
Development & Infrastructure
- DEV_WORKFLOW.md - Development workflow, multi-app batching, code generators, and app initialization
- INFRASTRUCTURE_SERVER.md - Local infrastructure server endpoints, health monitoring, and architecture
Storage & Permissions
- STORAGE_LOGIC.md - Storage permission embedding in tokens and cross-app access validation
- SEMANTIC_STORAGE.md - Semantic storage search with automatic embeddings and security keys
- SEMANTIC_STORAGE_PRODUCTION.md - Production implementation with Cloudflare Vectorize
- SEMANTIC_STORAGE_LOCATION_FILTERING.md - Location-based filtering for precise semantic searches
Commands
- AUTO_UPDATE.md - Auto-update system architecture and configuration
- INSTALL_INFO.md - System installation details
- EMBEDDING_DOWNLOADS.md - Selective and on-demand embedding downloads
- PUBLISH_INFO.md - Publishing workflow and requirements
- RESOLVE_INFO.md - Workspace dependency resolution
- LOGIN_INFO.md - Authentication flow and troubleshooting
- ORG_INFO.md - Organization management and role permissions
