Getting Started

Quick Start

Install your local Gostly stack, record one safe API interaction, and replay it without another upstream request.

Start with a safe upstream

Use a local fixture or an API you have permission to test. Production access is unnecessary. Choose one request with a predictable response so you can verify the result.

Prerequisites

  • Docker Engine running, with Docker Compose available.
  • A Gostly account and your installation files from the account dashboard.
  • An upstream reachable from inside the proxy container. On Docker Desktop, use host.docker.internal for a server on your Mac; localhost inside a container refers to that container.

See Install & Deploy for resource sizing, private environment setup, ports, and existing installations. Lite has no AI containers and is the default for active Pro trials. Full adds AI services and requires additional resources. Both use the same trial deadline; a paid subscription is required to continue after expiry.

Setup

1

Download your installation files

In your account dashboard, select Lite for your first record/replay workflow, then download the Compose file and private environment template. Choose Full explicitly when evaluating AI features. Keep the files together in a private installation directory. Follow the registry sign-in instructions shown there; use Docker's --password-stdin option so the token is not placed in a command argument.

The Lite stack includes:

ghost-postgres    # local database
ghost-migrate     # one-shot database setup; exits after success
ghost-web         # local dashboard (3000) and control API (8000)
ghost-proxy       # HTTP proxy (8080)

Full adds ghost-inference and ghost-llamacpp for eligible Pro/Team licenses. The authenticated Compose endpoint defaults active trials to Lite; ?variant=full opts into Full and ?variant=lite selects Lite. Use the downloaded file as the authority for your installation and retain its server-selected image digests, service dependencies, and shared volumes. Stack selection does not extend a trial or change your license. Preserve the same private environment when switching stacks; compare changes before applying them to existing data.

2

Prepare the private environment

For a fresh installation, copy the downloaded template to .env, fill in your license and upstream settings, and set the local administrator credentials. Preserve the generated database passwords and tenant ID. Never replace an existing deployment's environment with a fresh template.

If you set GHOST_API_KEY for authenticated API access, pass the same private value to both ghost-web and ghost-proxy. Adding it to .env alone does not inject it into a service. See service authentication setup for the Compose entries. Keep password authentication enabled.

docker info
docker compose config --quiet
docker compose pull
docker compose up -d
docker compose ps -a

Wait for database setup to finish successfully and the serving containers to be ready. A running container alone does not prove that capture is ready.

3

Register the service and check capture readiness

Open your local operator dashboard at http://localhost:3000 and sign in with the administrator credentials from your installation. This dashboard is included in both Lite and Full and is separate from the hosted account dashboard.

Add your test service with its upstream URL and a host or path routing rule that matches the request your application sends. Select LEARN mode and wait for the service configuration to reach the proxy. If you see agent_not_ready, missing upstreams, or authentication errors, resolve them before recording. The routing examples cover host and path matching.

For HTTPS clients

Enable ENABLE_TLS_INTERCEPTION in the proxy environment, ensure its Compose configuration publishes port 8443, and trust the proxy CA in your test client. See TLS setup.

4

Record one interaction, then build and switch to MOCK

Point the test client at http://localhost:8080, keeping the host or path required by your service routing rule. Send the chosen request once. Confirm the expected status and body, one upstream request, and a capture assigned to your registered service.

In the service's dashboard, choose Build & switch to MOCK. This processes the captured traffic and switches that service to MOCK as part of the same transition. Wait for completion with the expected processed records and no error. Recording traffic alone is not a completed durable build. API users can follow Record & Replay.

5

Verify MOCK replay

Confirm the service is in MOCK in the local dashboard, then repeat the same request through the proxy. Compare its status and body with the captured response and confirm the upstream request count did not increase.

To verify replay survives a proxy restart, restart only the disposable test proxy after the successful build and repeat the check. Keep the library, routing settings, and other services in place. A successful in-memory replay alone does not establish replay after restart.

Sharing mocks across environments

Local traffic and replay files may retain upstream bodies, including user data. Keep them private by default. Share only a deliberately reviewed test library; never commit credentials or the cached license.

# .gitignore — private by default
.env
data/traffic/
data/mocks/
data/license_cache.json

For CI, reuse the generated stack and a reviewed library with the same service configuration. Verify ready state and explicit MOCK mode before running tests. See CI integration.

What's next