.cursor/cursor.md
These instructions apply to Cursor Cloud Agents after .cursor/scripts/cloud-agent-start.sh materializes this file as .cursor/AGENTS.md.
docker info fails, inspect /tmp/docker-service-start.log and /tmp/dockerd.log; do not assume a snapshot will provide Docker.mattermost/enterprise through the multi-repo environment. The expected layout is sibling repositories, such as /agent/repos/mattermost and /agent/repos/enterprise; this matches server/Makefile's default ../../enterprise path.Start dependencies:
cd server
make start-docker
Start the server:
cd server
make run-server
Start the web app in another terminal when UI work needs live verification:
cd webapp
make run
The Mattermost server is expected at http://localhost:8065. The webapp dev server commonly uses http://localhost:9005.
In this multi-repo Cloud environment, mattermost and enterprise are expected to start from master, so sibling checkout skew should not need extra handling.
server/Makefile's run target only reaches run-client if the server is backgrounded. In Cloud, the reliable combined startup is:
cd server
ENABLED_DOCKER_SERVICES='postgres redis' RUN_SERVER_IN_BACKGROUND=true make run
If you want split terminals instead, use:
cd server
ENABLED_DOCKER_SERVICES='postgres redis' make run-server
and then:
cd webapp
make run
When the server starts and MM_LICENSE is present in the environment, the server applies that license automatically. If MM_LICENSE is not set, starting the server automatically applies an Entry license, which provides nearly all functionality needed for development.
When DOCKERHUB_USERNAME and DOCKERHUB_TOKEN are configured as Cloud Agent secrets, cloud-agent-start.sh logs in to Docker Hub and the full default make start-docker dependency set can be used without trimming services.
ENABLED_DOCKER_SERVICES='postgres redis' avoids optional local-dev services such as Prometheus, Grafana, Loki, Minio, Azurite, and OpenLDAP. Use this fallback when Docker Hub credentials are unavailable and anonymous pulls hit rate limits.
If the first-user signup UI is flaky but the server is already healthy, seed local state with mmctl and then log in through the browser:
cd server
./bin/mmctl --local user create --email [email protected] --username cursoradmin --password Password123! --system-admin --email-verified --disable-welcome-email
./bin/mmctl --local team create --name cursorteam --display-name "Cursor Team" --email [email protected]
A healthy server responds at:
curl http://127.0.0.1:8065/api/v4/system/ping
cd server && make setup-go-work; never run go mod tidy directly.cd webapp && make node_modules.cd e2e-tests/playwright && npm ci.e2e-tests Makefile and scripts. Docker Compose is available in the Cloud Agent image.Use the computerUse subagent's desktop (Chrome is preinstalled) for browser automation and screenshots. Prefer verifying UI changes against the running local Mattermost instance before opening or updating a PR.
AWS CLI v2 is installed for uploading screenshots or reports. Cloud Agents should receive AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_S3_BUCKET_NAME as environment variables.
Before uploading, verify credentials with:
aws sts get-caller-identity
aws s3 cp and share the plain object URL https://$AWS_S3_BUCKET_NAME.s3.amazonaws.com/<key> instead of generating a presigned URL.
Do not hardcode AWS credentials or bucket secrets in the repository.