No description
  • Go 94%
  • Python 4.7%
  • Makefile 0.6%
  • Dockerfile 0.4%
  • Shell 0.3%
Find a file
Daniel Finca 3b3ba4c8e2
Fix intFromMap bug and add tests for map utility functions (#1525)
Co-authored-by: Andrea Restle-Lay <arestlel@redhat.com>
Co-authored-by: Dave Mulford <243049+davemulford@users.noreply.github.com>
2026-03-31 14:12:45 -04:00
.github Bump docker/setup-qemu-action from 3 to 4 (#1537) 2026-03-11 09:19:08 +01:00
cmd Remove unused parameters from config functions 2025-12-05 10:50:23 +01:00
docs Add doc explaining kubernetes.go current workflow and functionality (#1461) 2025-11-25 09:08:11 -08:00
example Refactored logging in the workceptor package and the receptor-cli package. Removed unneeded log functions in logger.go. 2023-03-03 11:56:31 +00:00
internal/version Fix SonarQube issues: Remove unnecessary else clauses 2025-12-04 15:37:07 +01:00
packaging/container Remove unused tc-image 2025-12-15 11:40:48 +01:00
pkg Fix intFromMap bug and add tests for map utility functions (#1525) 2026-03-31 14:12:45 -04:00
receptor-python-worker feat: Use pyproject.toml instead of setup.cfg + pinned dependencies + ruff as linter. 2025-05-30 17:23:32 +02:00
receptorctl receptorctl: switch to TLS 1.2 minimum version (#1511) 2026-01-22 10:09:13 -05:00
tests [AAP-55666] Fix set minimum TLS version to 1.3 as Default (#1460) 2025-11-07 09:44:24 -05:00
tools Add note about why we are explicitly creating tag while staging 2023-11-22 09:25:10 +00:00
.dockerignore Remove unneeded packaging directory 2021-09-29 00:50:07 -04:00
.gitignore [TRIVIAL] [AAP-47010] Add unit tests for reload.go in the controlsvc package (#1401) 2025-08-14 16:45:22 -04:00
.gitleaks.toml Add CreateCA test (#933) 2024-01-31 10:11:41 -05:00
.golangci.yml Add test for connectUsingKubeconfig (#1420) 2025-09-03 08:25:31 -07:00
.readthedocs.yaml Update to Golang 1.23.9 (#1335) 2025-06-09 12:47:35 -07:00
CONTRIBUTING.md [AAP-60033] Modify receptor container build to support rootless pods (#1496) 2025-12-04 14:14:13 +00:00
generate.go [TRIVIAL] Move Netceptor interfaces to pkg/netceptor/interfaces.go (#1379) 2025-07-29 09:52:26 -07:00
go.mod [AAP-49041] Upgrade Quic library to 0.54.1* (#1439) 2025-10-22 08:35:26 -04:00
go.sum [AAP-49041] Upgrade Quic library to 0.54.1* (#1439) 2025-10-22 08:35:26 -04:00
LICENSE.md Add license 2020-05-18 11:39:18 -04:00
Makefile Remove unused tc-image 2025-12-15 11:40:48 +01:00
README.md Add sonar test coverage badge to README (#1451) 2025-10-20 16:09:32 -04:00
setup.cfg Add receptor documentation 2021-08-23 11:27:59 -04:00
sonar-project.properties Add python 3.12 as sonar targeted version (#1515) 2026-01-22 11:57:08 -05:00

Receptor

Coverage

Receptor is an overlay network intended to ease the distribution of work across a large and dispersed collection of workers. Receptor nodes establish peer-to-peer connections with each other via existing networks. Once connected, the Receptor mesh provides datagram (UDP-like) and stream (TCP-like) capabilities to applications, as well as robust unit-of-work handling with resiliency against transient network failures.

See the readthedocs page for Receptor at:

https://ansible.readthedocs.io/projects/receptor/

Terminology and Concepts

  • Receptor: The Receptor application taken as a whole, that typically runs as a daemon.
  • Receptorctl: A user-facing command line used to interact with Receptor, typically over a Unix domain socket.
  • Netceptor: The networking part of Receptor. Usable as a Go library.
  • Workceptor: The unit-of-work handling of Receptor, which makes use of Netceptor. Also usable as a Go library.
  • Node: A single running instance of Receptor.
  • Node ID: An arbitrary string identifying a single node, analogous to an IP address.
  • Service: An up-to-8-character string identifying an endpoint on a Receptor node that can receive messages. Analogous to a port number in TCP or UDP.
  • Backend: A type of connection that Receptor nodes can pass traffic over. Current backends include TCP, UDP and websockets.
  • Control Service: A built-in service that usually runs under the name control. Used to report status and to launch and monitor work.

How to Get It

The easiest way to check out Receptor is to run it as a container. Images are kept on the Quay registry. To use this, run:

[docker|podman] pull quay.io/ansible/receptor
[docker|podman] run -d -v /path/to/receptor.conf:/etc/receptor/receptor.conf:Z receptor

Use as a Go library

This code can be imported and used from Go programs. The main libraries are:

See the example/ directory for examples of using these libraries from Go.

Use as a command-line tool

The receptor command runs a Receptor node with access to all included backends and services. See receptor --help for details.

The command line is organized into entities which take parameters, like: receptor --entity1 param1=value1 param2=value1 --entity2 param1=value2 param2=value2. In this case we are configuring two things, entity1 and entity2, each of which takes two parameters. Distinct entities are marked with a double dash, and bare parameters attach to the immediately preceding entity.

Receptor can also take its configuration from a file in YAML format. The allowed directives are the same as on the command line, with a top-level list of entities and each entity receiving zero or more parameters as a dict. The above command in YAML format would look like this:

---
- entity1:
    param1: value1
    param2: value1
- entity2:
    param1: value2
    param2: value2

Python Receptor and the 0.6 versions

As of June 25th, this repo is the Go implementation of Receptor. If you are looking for the older Python version of Receptor, including any 0.6.x version, it is now located at https://github.com/project-receptor/python-receptor.