Skip to main content
Quickstart

Run the runtime locally, test one policy decision, then decide whether you need the console.

Every plan starts with the same boundary: the runtime runs in your environment. This guide gets you through the runtime-only path first so the commercial decision comes after technical validation, not before it.

Signing up creates a workspace, auto-generates your runtime token, and hands you a ready-to-paste Docker command on the first screen.

What changes by plan when you move past a local runtime-only proof of concept.
PlanRuntimeConsoleUse it when
StarterSelf-hosted runtimeNo consoleEvaluate the runtime and manage policies locally.
GrowthSelf-hosted runtimeHosted consoleAdd policy workflow and metadata-first operational visibility.
EnterpriseSelf-hosted runtimeHosted or self-hosted consoleHandle custom deployment or procurement requirements.

1. Clone the runtime repository

Start with the open-source runtime. Keep the first run local and uncomplicated so you can validate the evaluation path before thinking about team workflows.

git clone <runtime-repo-url> znyx-runtime
cd znyx-runtime

2. Run the standalone example

The standalone mode is the cleanest way to evaluate the product boundary. It uses local policy files and does not require the console.

git clone <runtime-repo-url> znyx-runtime
cd znyx-runtime
docker build -f znyx-backend/Dockerfile.runtime -t znyx-runtime znyx-backend/
docker run -d -p 8080:8080 --name znyx-runtime znyx-runtime

After startup, check http://localhost:8080/healthz and http://localhost:8080/readyz before sending an evaluation request.

3. Send a sample request

Use a small request that should trigger a visible policy action so you can confirm the runtime is enforcing policy in your environment.

curl -X POST http://localhost:8080/v1/evaluate/input \
  -H "Content-Type: application/json" \
  -d '{
    "request_id": "quickstart-001",
    "tenant_id": "default",
    "app_id": "default",
    "text": "My email is test@example.com"
  }'

4. Wrap your model call

The application pattern stays the same whether you remain on Starter or later connect the runtime to a console: evaluate input before the model call and evaluate output before it leaves your app.

from znyx_sdk import GuardrailsSyncClient

guardrails = GuardrailsSyncClient("http://localhost:8080")

input_result = guardrails.evaluate_input(
    user_message,
    tenant_id="default",
    app_id="my-app",
)
if input_result.is_blocked:
    return {"error": input_result.user_message}

llm_response = call_llm(input_result.sanitized_text or user_message)

output_result = guardrails.evaluate_output(
    llm_response,
    tenant_id="default",
    app_id="my-app",
)

return output_result.sanitized_text or llm_response

5. Decide whether to stay runtime-only or add the console

Stay on Starter if local policy files and self-service docs are enough. Move to Growth when you need shared policy rollout, operational traces, and team workflow. Move to Enterprise when the console also needs to live in your environment.

Deployment GuideIntegration Guide