Welcome! This guide will help you get the Mastra test app running on your computer in just a few steps. The database is already set up in the cloud, so you'll just be connecting to it!
- AI Agents: Smart assistants that can help with web automation
- Web Automation: AI that can visit websites and extract information
- Database: A cloud database with sample participant data for testing
- Playground: A web interface to interact with all the AI features
You'll need these installed on your computer:
- Node.js (version 20 or higher): Download here
- pnpm: Install by running:
npm install -g pnpm - Docker Desktop: Download here - Required for running the full stack locally
- gcloud CLI (optional): Install instructions - Only needed if working with GCP resources directly
Note: We use the
developbranch as our primary working branch. Make sure to checkoutdevelopafter cloning.
This project uses Git submodules to manage the client frontend. You'll need to clone with submodules or set them up after cloning.
# Clone the repository with submodules
git clone --recurse-submodules https://github.com/navapbc/labs-asp.git
cd labs-asp
# Switch to the develop branch (our primary working branch)
git checkout develop# If you already cloned the repo, initialize submodules
git submodule update --init --recursiveImportant: This project uses the
client/directory as a Git submodule that tracks thelabs-aspbranch of the AI chatbot repository.
If you're using Visual Studio Code:
- Open the project folder: Go to
File > Open Folderand select thelabs-aspdirectory - Open the terminal:
- Use the keyboard shortcut:
Ctrl+(backtick)on Mac - Or go to
Terminal > New Terminalin the menu - Or use
View > Terminal
- Use the keyboard shortcut:
The terminal should automatically open in the correct labs-asp directory. You can verify this by running pwd (on Mac) to see your current directory path.
# Install all required packages
pnpm installYou'll need to create three configuration files. Ask your team lead for access to the 1Password secure notes containing the actual values.
cp .env.example .envThen update the values with the contents from the 1Password secure note shared by your team lead.
cp client/.env.example client/.env.localThen update the values with the contents from the 1Password secure note for the client environment.
Important: If your
client/.env.localcontains aBROWSER_WS_PROXY_URLline, make sure it is commented out for local development:# BROWSER_WS_PROXY_URL=http://localhost:8080
touch vertex-ai-credentials.jsonCopy the service account JSON from the 1Password secure note. See docs/VERTEX_AI_ANTHROPIC_SETUP.md for details on creating your own credentials if needed.
Warning about 1Password: When copying from 1Password secure notes, ensure you're copying the raw text and not a markdown-rendered version. 1Password can convert files to markdown, which breaks commented lines (e.g.,
# commentbecomes a heading). If you encounter unexpected behavior, verify your file contents match the original format.
Important: The database is already set up and populated with test data! As a team member, you only need to connect to it. Please don't run migration or seeding commands, these are reserved for admins to avoid accidentally modifying shared data.
The database is ready to use with sample participant data already loaded. You'll be able to see this data once you start the app!
# Build and start all services
docker compose up -d --buildThis starts the complete stack including the AI chatbot client, Mastra backend, and browser streaming service. Access the app at http://localhost:3000.
# Launch the Mastra playground
pnpm devThis starts only the Mastra playground at http://localhost:4111.
Success! The app should now be running. Click the URL in your terminal to open it!
- Weather Agent: Ask about weather in any city
- Web Automation Agent: Have it visit websites and take screenshots
- Memory Agent: Store and retrieve information
- "What's the weather like in San Francisco?"
- "Visit google.com and take a screenshot"
- "Remember that our team meeting is every Tuesday at 2 PM"
# Open database browser
pnpm db:studioThis opens a web interface at http://localhost:5555 where you can browse the shared participant data (read-only).
If the app displays errors or becomes unresponsive:
-
Stop the current process:
- In your terminal, press
Ctrl+C(Mac) to stop the running process - If that doesn't work, close the entire terminal session:
- In VS Code: Click the trash can icon in the terminal panel, or right-click the terminal tab and select "Kill Terminal"
- In your terminal, press
-
Start fresh:
- Open a new terminal (see "Opening Terminal in Visual Studio Code" above)
- Make sure you're in the
labs-aspdirectory:cd labs-asp - Restart the app:
pnpm dev
-
If problems persist:
- Try clearing the cache:
pnpm clean(if available) and runpnpm installagain - Check that all environment variables are correctly set in your
.envfile
- Try clearing the cache:
If you're seeing stale behavior or containers aren't syncing properly:
docker compose down && docker compose build --no-cache && docker compose up -dNote: This may take 5-10 minutes to rebuild all images from scratch.
For client-side changes only (faster than full Docker rebuild):
cd client && pnpm build && pnpm devThis starts the client on http://localhost:3001 while still connecting to the Dockerized backend.
# All containers
docker compose logs -f
# Specific container
docker logs --tail 100 labs-asp-browser-streaming-1- Make sure you have the correct
DATABASE_URLin your.envfile - Contact your team lead if you're getting database connection errors
- Contact your team lead for the required API keys
- Make sure they're properly copied into your
.envfile
Contact your team lead if you need the database refreshed regular team members shouldn't modify the shared database.
# Start full stack with Docker (recommended)
docker compose up -d --build
# Start Mastra playground only
pnpm dev
# View database (read-only)
pnpm db:studio
# Full Docker rebuild
docker compose down && docker compose build --no-cache && docker compose up -d
# View Docker logs
docker compose logs -fThis project uses Git submodules to manage the client frontend. The client/ directory is a submodule that tracks the labs-asp branch of the AI chatbot repository.
Set up Git to automatically handle submodules and create a convenient alias:
# Configure Git to automatically handle submodules in most operations
git config --global submodule.recurse true
# Create an alias for pulling with submodules
git config --global alias.spull "pull --recurse-submodules"# Pull latest changes from both main repo and submodules
git spull
# Alternative: Pull with submodules (if you don't have the alias)
git pull --recurse-submodules
# Update submodule to latest commit from its remote branch
git submodule update --remote client
# Check submodule status
git submodule status
# Initialize submodules if they're missing
git submodule update --init --recursiveWhen PRs are merged into the main repository, always pull with submodules:
git spull # Pulls both main repo and submodule changes automaticallySometimes you'll need to update the main repository to point to a newer commit in the submodule:
# Update submodule to latest remote commit
git submodule update --remote client
# Add and commit the submodule reference update
git add client
git commit -m "feat: update client submodule to latest commit"
git pushYou can view the submodule configuration in .gitmodules:
cat .gitmodulesThis shows how the submodule is configured to track the labs-asp branch.
git submodule update --init --recursivegit submodule update --remote clientgit submodule update --recursivegit config -f .gitmodules --get submodule.client.branchNote: These commands are for admins only and will modify shared data:
# Add sample data (admin only)
pnpm seed:wic
# Reset everything (admin only)
pnpm db:reset
# Create migrations (admin only)
pnpm db:migrate- Detailed Database Guide: See
DATABASE_SETUP.md - Web Automation Features: See
PLAYWRIGHT_MCP_GUIDE.md - Need Help?: Ask your team lead or create an issue