# Routr > Routr is a programmable SIP proxy, registrar and location server built as a set of cloud-native gRPC services. - [Introduction](https://docs.routr.io/introduction.md): Learn what Routr is, who it's for, and how it differs from other SIP servers, so you can decide where to start. - [Quickstart](https://docs.routr.io/quickstart.md): Run Routr on your machine with Docker, create a Domain and two Agents with rctl, and make your first call between two softphones. - [Quickstart on Kubernetes](https://docs.routr.io/quickstart-kubernetes.md): Install the Routr Connect Helm chart on a local Kubernetes cluster and manage it with rctl. - [Architecture](https://docs.routr.io/concepts/architecture.md): Understand the services that make up Routr, what each one does, and which ones keep state, so you can deploy, scale, and extend it with confidence. - [Message flow](https://docs.routr.io/concepts/message-flow.md): Follow a SIP request through Routr, from the EdgePort to the Dispatcher, Middlewares, and Processor and back, so you know where to plug in your own logic. - [EdgePort cooperation](https://docs.routr.io/concepts/edgeport-cooperation.md): Learn how several EdgePorts route calls to endpoints connected to each other, what you must configure to keep that safe, and what happens when an EdgePort restarts. - [Connect mode](https://docs.routr.io/concepts/connect-mode.md): Understand Routr's built-in Connect processor, the resources it works with, and when to use it instead of writing your own Processor. - [Routing](https://docs.routr.io/concepts/routing.md): Learn how the Connect processor classifies each call into one of five routing types, which checks it runs, and how Numbers steer calls from the PSTN. - [Load balancing](https://docs.routr.io/concepts/load-balancing.md): Learn how Routr spreads calls across a group of Peers such as Asterisk or FreeSWITCH servers, and how round-robin, least-sessions, and session affinity behave. - [Deployment topologies](https://docs.routr.io/concepts/deployment-topologies.md): Compare running Routr as one container with routr-one and as separate services with the routr-connect Helm chart, and learn how each component scales. - [Deploy with Docker](https://docs.routr.io/guides/deploy-with-docker.md): For operators who want a single-host Routr server: run routr-one with docker run or Docker Compose, keep data across restarts, and upgrade safely. - [Deploy on Kubernetes with Helm](https://docs.routr.io/guides/deploy-on-kubernetes.md): For operators running Kubernetes: install the routr-connect Helm chart, set the values that matter, and upgrade or remove the release. - [Secure the server](https://docs.routr.io/guides/secure-the-server.md): For operators exposing Routr beyond a test network: turn on TLS for the API Server and SIP signaling, install certificates, and connect clients over TLS. - [Scale the Location Service with Redis](https://docs.routr.io/guides/scale-with-redis.md): For operators growing past one Location Service instance: switch the registration cache from memory to Redis on Docker or Kubernetes. - [Set up a home or office phone system](https://docs.routr.io/guides/home-or-office-setup.md): For anyone building a small phone system: run Routr on one server with file-based configuration, add extensions, connect a SIP trunk and a phone number, and register softphones. - [Connect Asterisk or FreeSWITCH as a Peer](https://docs.routr.io/guides/connect-a-pbx-as-a-peer.md): For teams putting a PBX or media server behind Routr: register Asterisk or FreeSWITCH as a Peer, route numbers and extensions to it, and let it place outbound calls through your trunks. - [Enable WebRTC clients](https://docs.routr.io/guides/enable-webrtc.md): For developers adding browser calling: open WebSocket transports on the EdgePort, bridge WebRTC and SIP media with RTPRelay and RTPEngine, and tune Agents for browser clients. - [Manage resources with rctl](https://docs.routr.io/guides/manage-resources-with-rctl.md): For operators managing a Routr server from the terminal: install rctl, connect it to the API Server with or without TLS, and create, list, update, and delete resources. - [Manage resources with the Node.js SDK](https://docs.routr.io/guides/manage-resources-with-the-sdk.md): For developers automating Routr: install @routr/sdk, configure the client for TLS or insecure connections, create and list Agents, and handle API errors. - [Build a processor](https://docs.routr.io/guides/build-a-processor.md): For developers who want custom signaling logic: write a Node.js Processor with @routr/processor and the Alterations API, then route traffic to it from the Message Dispatcher. - [Build a middleware](https://docs.routr.io/guides/build-a-middleware.md): For developers who want to inspect or modify SIP traffic around a processor: write a middleware with @routr/processor and register it in the Message Dispatcher. - [Store custom data with the API Server](https://docs.routr.io/guides/custom-data-with-the-apiserver.md): For developers who need to attach their own fields to Routr resources: write, read, and use the extended property through the SDK and your processors. - [Extend rctl with plugins](https://docs.routr.io/guides/extend-rctl.md): For developers who want custom commands in the Routr CLI: generate an oclif plugin, link it into rctl, and publish it. - [Run Routr from source](https://docs.routr.io/guides/run-from-source.md): For contributors and processor authors: build Routr from the repository, run all services or a single one locally, and run the test suites. - [Develop with Gitpod](https://docs.routr.io/guides/develop-with-gitpod.md): For contributors who want a ready-made environment: open Routr in a Gitpod workspace and connect a local softphone to it over SSH. - [Load balance Asterisk with Routr](https://docs.routr.io/tutorials/load-balancing-asterisk.md): Run two Asterisk servers behind Routr as a single Peer and watch Routr spread new calls between them. - [Build an intercom system on Kubernetes](https://docs.routr.io/tutorials/intercom-on-kubernetes.md): Install Routr on a local Kubernetes cluster with Helm, create a few Agents, and call between softphones. - [Deploy Routr to Civo with Helm](https://docs.routr.io/tutorials/deploy-to-civo-with-helm.md): Create a Civo Kubernetes cluster, install the routr-connect chart with a public SIP address, and verify it with rctl. - [Stream call events to NATS](https://docs.routr.io/tutorials/call-events-with-nats.md): Turn on EdgePort's NATS publisher, subscribe with the nats CLI, and see an event for every registration, call start, and call end. - [Call from the browser with ephemeral agents](https://docs.routr.io/tutorials/ephemeral-agents-in-the-browser.md): Issue a signed JWT to a website visitor, register a SIP.js client with it, and call an Asterisk server through Routr and RTPEngine. - [Community](https://docs.routr.io/community.md): For anyone using or building Routr: where to ask questions, report bugs, follow the project, and find commercial support. - [Contributing](https://docs.routr.io/contributing.md): For first-time and regular contributors: how to find work, set up your environment, write commits that pass the checks, and get a pull request merged. - [Frequently asked questions](https://docs.routr.io/faqs.md): For people evaluating or running Routr: short answers about what Routr is, what it depends on, how it compares to other SIP servers, and how it handles media. - [rctl command reference](https://docs.routr.io/reference/rctl.md): Every rctl command, argument, flag, and prompt, for operators who manage Routr resources from the command line. - [Node.js SDK reference](https://docs.routr.io/reference/sdk.md): The @routr/sdk API for developers who manage Routr resources from Node.js: client options, every resource client, and its methods, requests, and responses. - [Connect resources overview](https://docs.routr.io/reference/resources/overview.md): The shared shape of Routr Connect resources, for operators who write YAML resource files or call the API, and an index of the seven resource types. - [Agent resource](https://docs.routr.io/reference/resources/agents.md): Every field of the Agent resource, in YAML and API form, for operators who configure SIP users in Routr Connect. - [Domain resource](https://docs.routr.io/reference/resources/domains.md): Every field of the Domain resource, in YAML and API form, for operators who group Agents and set outbound calling rules in Routr Connect. - [Peer resource](https://docs.routr.io/reference/resources/peers.md): Every field of the Peer resource, in YAML and API form, for operators who connect PBXs and media servers to Routr Connect and load balance them. - [Trunk resource](https://docs.routr.io/reference/resources/trunks.md): Every field of the Trunk resource, in YAML and API form, for operators who connect Routr Connect to a SIP provider for PSTN calls. - [Number resource](https://docs.routr.io/reference/resources/numbers.md): Every field of the Number resource, in YAML and API form, for operators who route phone numbers between a Trunk and Agents or Peers in Routr Connect. - [Credentials resource](https://docs.routr.io/reference/resources/credentials.md): Every field of the Credentials resource, in YAML and API form, for operators who set the usernames and passwords Agents, Peers, and Trunks authenticate with. - [AccessControlList resource](https://docs.routr.io/reference/resources/acl.md): Every field of the AccessControlList resource, in YAML and API form, for operators who restrict which networks can send calls through a Trunk. - [EdgePort](https://docs.routr.io/reference/components/edgeport.md): Reference for the EdgePort: its image, ports, configuration file, environment variables, and gRPC contract. - [Message Dispatcher](https://docs.routr.io/reference/components/dispatcher.md): Reference for the Message Dispatcher: its image, port, configuration file, environment variables, and gRPC contract. - [Location Service](https://docs.routr.io/reference/components/location.md): Reference for the Location Service: its image, port, configuration file, Redis parameters, environment variables, and gRPC contract. - [Connect processor](https://docs.routr.io/reference/components/connect.md): Reference for the Connect processor: its image, port, environment variables, EdgePort trust settings, and gRPC contract. - [API Server](https://docs.routr.io/reference/components/apiserver.md): Reference for the API Server backends, pgdata (PostgreSQL) and simpledata (YAML files): images, ports, environment variables, and gRPC contract. - [Registry Service](https://docs.routr.io/reference/components/registry.md): Reference for the Registry Service: its image, health port, configuration file, environment variables, and the gRPC calls it makes. - [Requester](https://docs.routr.io/reference/components/requester.md): Reference for the Requester: its image, ports, environment variables, and gRPC contract. - [RTPRelay](https://docs.routr.io/reference/components/rtprelay.md): Reference for the RTPRelay middleware: its image, port, environment variables, and gRPC contract. - [SimpleAuth](https://docs.routr.io/reference/components/simpleauth.md): Reference for the SimpleAuth middleware: its image, port, environment variables, users file, and gRPC contract. - [Environment variables](https://docs.routr.io/reference/environment-variables.md): Every environment variable and port of the routr-one image, grouped by component, for anyone running Routr with Docker. - [Helm chart values](https://docs.routr.io/reference/helm-values.md): Every value of the routr-connect Helm chart, with type, default, and effect, for anyone deploying Routr on Kubernetes. - [Alterations API reference](https://docs.routr.io/reference/alterations-api.md): Every alteration and header helper exported by @routr/processor, for developers who build Processors that rewrite SIP requests before EdgePort sends them. - [SIP headers reference](https://docs.routr.io/reference/sip-headers.md): The X- headers Routr reads, adds, and strips, for developers and operators who integrate PBXs, providers, and clients with Routr Connect. - [Changelog](https://docs.routr.io/changelog.md): For operators and developers tracking Routr releases: the latest versions with a one-line summary each, and where to find the full release notes. - [Previous versions](https://docs.routr.io/previous-versions.md): For users running an older Routr release: where to find the frozen documentation for v2.0.0 and v1.x, and how to get the source of any version. ## Optional - [GitHub](https://github.com/fonoster/routr) - [Community](https://discord.gg/4QWgSz4hTC) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.