Skip to content
  • Our Product
    • Namazu Elements
      • What is Elements?
      • Why open source?
      • Docs
        • Namazu Elements in Five Minutes or Less
        • RESTful APIs Library
        • Security Model
        • Accessing the Web UI (CMS)

    Our Product

    A logomark with three layered rhombuses adorning the lettermark that says Elements in bold all-caps sans-serif letters.
    • What is Namazu Elements? Discover our easy-to-use backend network solution built for online games. Rapidly enables full-scale multiplayer games or online solo adventures.
    • Why open source? Is there a truly open source server backend for connected games? There is now. Download and run a local copy of Namazu Elements and try it for yourself.
    Download Namazu Elements

    Get started

    • Quick start Read our Elements 5-minute quick start guide
    • Documentation Read our developer docs for learning more about Elements
    • RESTful APIs A full list of core API specs for working with the Elements framework
    • Security An overview of the server-authoritative security model of Elements
    • Accessing the CMS Manage your game with ease via the Namazu Elements CMS.

    Co-development Reimagined

    • Best real-time game backends in 2026 If you're researching an alternative to your current backend solution, we've prepared a report of all of the backend solutions on the market in 2026 and how Namazu Elements compares.
      Co-dev

    Recent Posts

    • The watercolor-styled Namazu Studios logo over a giant namazu lurking in the depth
      Namazu Studios Featured in San Diego Business Journal
      22 Sep 2025 Press
    • Namazu Elements 3.1 Released – Service Layer Fixes, Secure APIs, and Steam Bug Fix
      22 Apr 2025 Release Notes
  • Case Studies
  • About Us
  • News
  • Services
  • Book a call
namazu-studios-logo
Book a call
Popular Search Roblox

Getting Started

  • Namazu Elements in Five Minutes or Less
  • Overview
  • Accessing the Web UI (CMS)
  • CMS Feature Overview

Fundamentals

  • Why You Need a Server (and What “Authoritative” Means)
  • Elements as a Game Runtime
  • Where Your Authoritative Code Runs
  • Lifecycles and Flows

General Concepts

  • Custom Elements
  • Data Models
  • Security Model
  • N-Tier Architecture

Namazu Elements Core Features

  • Email Service
  • Applications
  • Sessions
  • Users and Profiles
  • Digital Goods
  • Progress and Missions
  • Progress and Missions (3.4+)
  • Leaderboards
  • Matchmaking – Comprehensive Guide
  • Friends
  • Followers
  • Product Bundles and SKUs
  • Item Ledger
  • Receipts
  • Reward Issuances
  • Save Data
  • Metadata
  • Metadata (3.4+)
  • Queries
  • User Authentication / Sign In
    • What is a User?
    • Email Verification
    • User Authentication in Elements
    • Account Linking
    • Setting Up Twitch OIDC Login (Backend)
    • OIDC Login for Thick Clients (Browser Redirect Flow)
    • Auth Schemes
      • Auth Schemes
      • OAuth2
      • OIDC
  • Features
    • Web3
      • Wallets
      • Vaults
      • Omni Chain Support
      • Smart Contracts
        • Smart Contracts
  • Queries
    • Advanced Operators
    • Object Graph Navigation
    • Boolean Queries
    • Base Query Syntax
  • Advanced Operators
    • .name
    • .ref

Your Game Code - Adding Custom Elements

  • Custom Code Overview
  • Windows Setup
  • Mac OS Setup
  • Ubuntu Linux Setup
  • Element Anatomy: A Technical Deep Dive
  • Introduction to Guice and Jakarta in Elements
  • Structuring your Element
  • Events
  • Packaging an Element with Maven
  • Deploying an Element
  • Preparing for code generation
  • Properties
  • Websockets
  • RESTful APIs
  • Direct MongoDB Access (3.5+)
  • Building the Example Element: A Complete Walkthrough
  • Building the Kotlin Example Element: A Complete Walkthrough

Configuration

  • Configuring External URLs for Deployment
  • Matchmaking – Comprehensive Guide
  • Direct Database Access and Batch Configuration
  • Connecting Namazu Elements to a TLS-Enabled MongoDB Replica Set
  • Batch Samples
    • Mission Upload Bash Script Sample
    • Item Upload Bash Script Sample

RESTful APIs

  • Importing into Postman
  • RESTful APIs Library
  • Swagger and Swagger UI

Add-Ons

  • Crossplay
    • Crossfire Client Libraries (JVM & Browser)
    • Crossfire Protocol Reference
    • Crossfire: Custom Matchmaking Algorithms
    • Namazu Crossfire (Multiplayer)
    • Deploying Namazu Crossfire in your game
  • Roblox
    • Roblox Overview
    • Secure Player Authentication & Registration
    • Global Matchmaking
    • Roblox Security Best Practices
  • Container on Demand
    • Namazu Conductor
    • Namazu Conductor Admin API
    • Configuring Namazu Conductor Providers
  • Commerce
    • Stripe
      • Stripe
      • Configuring the Stripe Element
      • Stripe REST API Reference
      • Stripe REST API Reference

Game Engine & Client Support

  • Unity
    • Elements Unity Plugin
    • Unity Crossfire Plugin
  • Gamemaker
    • Incorporating GMEXT-Elements into a GameMaker Project

Troubleshooting

  • Common Issues with Docker
  • Local SDK
    • Unable to deploy application : dev.getelements.elements.sdk.exception.SdkElementNotFoundException
    • Could not load class : java.lang.NoClassDefFoundError
  • Namazu Elements Community Edition
    • Common Issues with Docker
    • Unable to deploy application : dev.getelements.elements.sdk.exception.SdkElementNotFoundException
    • Running in the IDE
      • Exception in monitor thread while connecting to server localhost:27017
      • Could not deployAvailableApplications Jetty server Failed to bind to /0.0.0.0:8080 Address already in use

Releases

  • 3.8 Release Notes
  • 3.7 Release Notes
  • 3.6 Release Notes
  • 3.5 Release Notes
  • 3.4 Release Notes
  • 3.3 Release Notes
  • 3.2 Release Notes
  • 3.1 Release Notes
View Categories
  • Home
  • Docs
  • Add-Ons
  • Container on Demand
  • Configuring Namazu Conductor Providers

Configuring Namazu Conductor Providers

Est. read time: 5 min read

AI Doc Summarizer Doc Summary
AI Doc Summarizer Thinking Thinking

Each Namazu Conductor provider Element is configured independently via attributes, and each honors a different subset of the common core concepts — profiles come from a different provider-native resource, and placement/scope hints are only applied where the provider has an equivalent concept. This page covers EdgeGap, AWS ECS, Kubernetes, and Unity Multiplay.


Placement and Scope Support #

You can send the same JobRequest — including any combination of JobPlacement and JobScope entries — to every provider you have deployed. Each one only acts on what it understands:

ProviderRegionPlacementIpPlacementLatitudeLongitudePlacementNamespaceScopeClusterScopecommand / args override
EdgeGapIgnoredHonored (ip_list)Honored (geo_ip_list)IgnoredIgnoredNot supported by the EdgeGap deploy API
ECSIgnored — placement is governed by the configured subnets/security groups (awsvpc) or the target container instance (EC2)IgnoredIgnoredIgnoredHonored — overrides the cluster a task is launched intoHonored (container override on the Profile’s primary container)
KubernetesHonored — sets a topology.kubernetes.io/zone node selectorIgnoredIgnoredHonored — overrides where the workload (and any Service) is createdIgnoredHonored (container override)
MultiplayHonored — the first entry’s id is sent as the allocation’s regionIdIgnoredIgnoredIgnoredIgnoredNot supported by the Multiplay allocation API

EdgeGap #

The EdgeGap provider talks to the EdgeGap REST API v1. A JobProfile corresponds to one active app version (<appName>:<versionName>); getAvailableProfiles() lists every active version across every app visible to your API key.

AttributeDefaultDescription
dev.getelements.conductor.edgegap.api.keynone — requiredEdgeGap API key, sent as the bare Authorization header value. Marked sensitive.
dev.getelements.conductor.edgegap.base.urlhttps://api.edgegap.comEdgeGap API base URL. Override for a regional mirror or a test environment.
dev.getelements.conductor.edgegap.stdio.bridge.port10080Port the namazu-stdio-bridge sidecar listens on, if your app version’s image includes one. See Streaming Job Stdio in Namazu Conductor.
dev.getelements.conductor.edgegap.stdio.bridge.base.path(empty)Base path prefix for the bridge’s WebSocket endpoints. Must match the bridge’s own NAMAZU_CONDUCTOR_STDIO_URI.

Status polling runs against GET /v1/status/{request_id} every 5 seconds (fixed, not currently configurable). EdgeGap’s own status strings are mapped onto JobStatus as: anything ending in INITIALIZING or WAITING → PENDING; RUNNING → RUNNING; TERMINATED/TERMINATING → COMPLETED; anything else → FAILED.


AWS ECS #

The ECS provider talks to AWS ECS via the AWS SDK v2. A JobProfile corresponds to one active task definition family; getAvailableProfiles() only surfaces families tagged namazu.conductor:jobSet=<value> matching your configured job set.

AttributeDefaultDescription
dev.getelements.conductor.ecs.regionnone — requiredAWS region the cluster lives in (e.g. us-east-1).
dev.getelements.conductor.ecs.clusternone — requiredDefault cluster name or ARN tasks launch into. Overridable per request via ClusterScope.
dev.getelements.conductor.ecs.subnetsnoneComma-separated subnet IDs. Required for task definitions using awsvpc network mode.
dev.getelements.conductor.ecs.security.groupsnoneComma-separated security group IDs. Required for awsvpc task definitions.
dev.getelements.conductor.ecs.job.setdefaultOnly task definition families tagged namazu.conductor:jobSet=<value> matching this are surfaced as profiles.
dev.getelements.conductor.ecs.stdio.bridge.port10080Port the namazu-stdio-bridge sidecar listens on, if your task definition’s image includes one.
dev.getelements.conductor.ecs.stdio.bridge.base.path(empty)Base path prefix for the bridge’s WebSocket endpoints.

Fargate vs. EC2 launch type #

There’s no separate attribute to pick Fargate vs. EC2 — the launch type is read per task definition family from an ECS resource tag, namazu.conductor:launchType. If the tag is absent, the family defaults to Fargate. Similarly, whether a launched task gets a public IP is controlled by the namazu.conductor:assignPublicIp tag (default: disabled).

Subnet/security group/public-IP configuration is only applied when the task definition’s network mode is awsvpc. For EC2 tasks running in bridge network mode, that configuration is skipped entirely and Conductor instead resolves the job’s reachable host/endpoints from the underlying container instance’s EC2 IP.

ClusterScope and task tracking #

When a request’s ClusterScope overrides the configured default cluster, ECS task ARNs (arn:aws:ecs:<region>:<account>:task/<cluster>/<task-id>) carry the cluster name, so stop() and status polling can recover it without Conductor persisting any extra state. The one exception is listExecutions(), which always queries the configured default cluster — tasks launched into a cluster-scoped override won’t appear there.


Kubernetes #

The Kubernetes provider maps PodTemplate resources to JobProfiles using Fabric8. Client configuration comes from Fabric8’s auto-detection (in-cluster Service account, then ~/.kube/config) unless KUBECONFIG_PATH / MASTER_URL are set.

AttributeDefaultDescription
dev.getelements.conductor.kubernetes.namespacedefaultNamespace PodTemplates are discovered in and workloads are created in by default. Overridable per request via NamespaceScope.
dev.getelements.conductor.kubernetes.job.setdefaultOnly PodTemplates labeled namazu.conductor/job-set=<value> matching this are surfaced as profiles.
dev.getelements.conductor.kubernetes.kubeconfig.path(empty)Optional path to a kubeconfig file, overriding Fabric8 auto-detection.
dev.getelements.conductor.kubernetes.master.url(empty)Optional Kubernetes API server URL override.
dev.getelements.conductor.kubernetes.poll.interval.ms5000Polling interval, in milliseconds, while waiting for a target status — used unless watches are enabled below.
dev.getelements.conductor.kubernetes.watch.enabledfalseWhen true, status transitions are observed via a Kubernetes watch on the Pod/Job instead of polling. Falls back to polling if the watch closes with an error before reaching a terminal status.

Behavior is otherwise driven entirely by labels and annotations on the PodTemplate itself:

Label / AnnotationValuesEffect
namazu.conductor/job-set (label)stringMust match the configured job set for the template to be surfaced as a Profile.
namazu.conductor/workload-kindpod (default) or jobpod launches a long-standing, bare Pod; job launches a one-off batch/v1 Job. Pod phases / Job status map onto JobStatus accordingly.
namazu.conductor/expose-portse.g. "7777/udp,8080/tcp"If present, a Service selecting the workload is created. If absent, no Service is created and endpoints fall back to the pod IP.
namazu.conductor/Service-typeNodePort (default), LoadBalancer, or ClusterIPType of the created Service, when one is created.

The following annotations apply only when namazu.conductor/workload-kind: job. Each is an optional integer string; if absent, the field is omitted and the Kubernetes default applies; if invalid (non-numeric or negative), a warning is logged and the field is likewise omitted.

AnnotationJob fieldKubernetes default
namazu.conductor/ttl-seconds-after-finishedspec.ttlSecondsAfterFinishednone
namazu.conductor/backoff-limitspec.backoffLimit6
namazu.conductor/active-deadline-secondsspec.activeDeadlineSecondsnone
namazu.conductor/completionsspec.completions1
namazu.conductor/parallelismspec.parallelism1

Created Services carry a namazu.conductor/owned-by=<workload-name> label, which is how stop() finds and deletes them without Conductor persisting any extra state of its own.

streamStdio() is native here — it attaches to the pod’s first container the same way kubectl attach does. The pod must be in the Running phase; otherwise the call throws.


Unity Multiplay #

The Multiplay provider authenticates against Unity’s Services API using a Service account (key id + secret), exchanging it for an access token that’s cached for 55 minutes (tokens themselves expire after an hour). A JobProfile corresponds to one fleet + build configuration pair; getAvailableProfiles() lists every pair referenced across your project’s fleets and environments.

AttributeDefaultDescription
dev.getelements.conductor.multiplay.key.id(empty) — requiredUnity Service account key id.
dev.getelements.conductor.multiplay.key.secret(empty) — requiredUnity Service account key secret.
dev.getelements.conductor.multiplay.project.id(empty) — requiredUnity project id (GUID) that owns the Multiplay resources.
dev.getelements.conductor.multiplay.environment.id(empty) — requiredUnity environment id (GUID) within the project, e.g. production or staging.

Executing a job creates a Multiplay allocation. Job status is derived from the allocation’s own status: ALLOCATED → RUNNING, FAILED → FAILED, CANCELLED → COMPLETED, anything else → PENDING. Multiplay’s allocation API has no container-exec equivalent, so streamStdio() isn’t supported on this provider.

What are your Feelings
Still stuck? How can we help?

How can we help?

Updated on August 14, 2026
Namazu Conductor Admin APINamazu Conductor
Table of Contents
  • Placement and Scope Support
  • EdgeGap
  • AWS ECS
    • Fargate vs. EC2 launch type
    • ClusterScope and task tracking
  • Kubernetes
  • Unity Multiplay
  • Documentation
  • Terms of Service
  • Privacy Policy
  • Contact us
  • Linkedin
  • Join our Discord

Namazu Studios LLC is powered by Namazu Elements, an open source modular backend framework for connected games.

Namazu Elements
  • Download
  • About Elements
  • Open source
  • Documentation
  • Support
Namazu Studios
  • Case Studies
  • About Us
  • News
Best realtime game backends 2026
Get in Touch
  • info@namazustudios.com
  • Book a call
  • (619) 862-2890
  • Linkedin
  • Discord

©2008-2026 Namazu Studios. All Rights Reserved.