How to Maschinenraum

This documentation is aimed at assemblies and describes how you can manage your assembly and content in the maschienenraum (engine room).

The software is designed to also work with future events with physical attendance, as well as mixed events. This is why it also has options to create physical rooms. For RC3 the digital features will be the solely relevant for the most of you.

Important Infos

Legal entity for abuse reports is the CCCV GmbH. All links that point into the internet, are not whitelisted and will be guarded by a dereferer notice. The notice will highlight that this link is outside our domain and hence the operator of said service is responsible for it.

You are responsible for your assemblies and any content in them. Any abusive content will be deleted without warning.

Hosting: Should you want to run services, please host them yourself. If this is not possible, use services that are located in the EU. The use of US Providers is not acceptable, should you want to incorporate them into RC3. We reserve the right to remove/ignore these links, since US data protection is not up to our standards.

What ever happens in your assembly is your responsibility. There for please remember to amend you imprint and privacy notice.


For you to administrate your assembly we've setup the Maschienenraum under This how ever is not the conference front-end and you will not see content of other assemblies.

The account in use for this, may later be used for the conference platform, once a conference ticket has been linked to it. ( To do so we will provide a link through the ticket tool at a later time.) To log in please use your username (not email address) and password from signup.

Upon creation, your assembly will pick an abbreviated name (used in URLs), as well as a spoken name. Once thats done we continue in a bigger menu:

Organisational Data

This menu point allows you to select the assembly representation:

  • Basic data: Whats your name? What do you do? Do you habe a logo or website? Also add tags for the search! Here you can upload your frontend page banner. The page will be about 1200px wide, but will be scaled responsive. 16:9 will be a format that might fit match best, but you are free on that. Banner immages shouldn't be larger than 2000x2000px.
  • Links: To which Assembly do you have ties (personnel or topical)? Next to whom do you "sit"?
  • Members: Who's part of your assembly? The role of "offical contact person"(offizieller Ansprechpartner) will be used as such. We'll highlight the person on the website and use them as contact for the orga, for example in abuse cases. The role manager will be displayed as a regular person (should you choose to assign it), but is capable of changing settings of the assembly. And lastly all members may be shown publicly, but don't have to be.
  • Authentication:
  • This is where you can fetch tokens, with which your assembly can for example give badges to users.
  • Additionally this is where you can register external applications, that will use OAuth2 -based authentication for conference participants.

How are rooms created?

Rooms are modeled after the real world (see intro). Then can ether be created for the PlainUI, or for the 2D world. The options differ.

The 2D-world is not barrier-free, therefore you have the possibility to create barrier-free PlainUI BBB-rooms for self organized sessions, as well as spontaneous "fireside chats".

To create a room, enter name, type of room and capacity. If you're planning a lecture hall, workshop room or stage, please remember that conference rooms online don't scale indefinitely. There have been BBB rooms with aprox. 90 participants. This works if people only unmute if necessary and only the speakers turn on their cameras.

Contributing a map to the 2D world

To add a map to the 2D world, you have to offer a cloneable git repo. If the repo is private, you'll have to add deploy tokens in the URL, e.g.

Learn how to create a compatible map in the rC3-World HowTo:

What shall projects actually be?

Everything you would like to share with the world.

Flying mate crates, cocktail robots, waffles of mass destruction? Show us and the world!

How are projects created?

We want to see your projects! To see them in the frontend, we'll need from you:

  • Project name
  • Description: The flavor text for the info page of your project in the frontend. What's shown? Why would no one want to miss it? Where did the idea come from? Who made this?
  • Also: We're still searching people for xyz
  • Links to other contents (through deferrer) possible, like a gallery or source code repos, ...

Of course you add links for example to the wikis for your projects, however a deferrer warning will be added for everything that is outside of rC3-Domains (e.g. YOLO-land).

External media and streams

External streams from YOLO-land have several downsides (GEMA, abuse, security, ...), which is why we're not integrating those in the world and plainUI, but instead link out to your own sites. This means users will be accessing your own infrastructure via a deferrer. If you want to add audio and video in the rC3 (for example on your map), you have the option to store a small amount of data (aprox. 200MB) in the "hangar" (see below). This can then be integrated in your 2D world and onto your project sites.

How are events with schedule entry created?

You can offer lectures and sessions as part of your assembly that will show up in the schedule (a little bit apart from the official program), somewhere between an official lecture and a self-organised session. A location is not compulsory (yet useful so people know where to go)

What is the "hangar" in the back office/Maschinenraum?

You're reserving a "hangar" space, which is then assigned to you. You can imagine it like a virtual storage room for assemblies to embed static content like short videos and loops, audio, etc. in the world. This is NOT meant as a file share, don't use it for hosting any kind of online-presence (you wouldn't put a whole armada of planes in a tiny hangar). When you're uploading data to the "hangar" please make sure you have the rights to the uploaded data. Violations will lead to the exclusion of the assembly from the whole event.

You can create the hangar as a room in the Maschinenraum. To do this, click on the "+" next to the menu item "Rooms". In the overview that opens is an option at the top right to set up the hangar. There is only one hangar per assembly. Further setup is not required. Creating the hangar can take up to 15 minutes.

After the hangar has been created, you will find an ftps link of the following form in the "Hangar Access" field in the created room:

<username> is the slug of your assembly (see also under "Organisational Data" / "Basic Data")
<password> is your automatically generated FTP password.
<server> is the FTP server on which the upload takes place.

For example, such a link for an assembly with the slug "ccc" might look like this:

You can upload your files with an FTPS-capable programme (e.g. FileZilla (external link)).

After the upload, the file can be included in the with the link<username>/<filename>.

<filename> is the name of the uploaded file. This may contain spaces, but these must be treated accordingly in the link.

What are badges and how to create them?

Badges should strengthen the explorative character of the congress: Assemblies can distribute these stickers/awards for "been there", "discovered something" or maybe also "P=NP proven"...

How does it work and what is possible? What means sticker and achievement mode?

Badges need:

  • A name
  • A picture: we recommend PNG, 512x512px
  • Select: sticker or achievement mode

Badges are distributed to users via token. A matching token can be generated when generating the badge.

  • Stickermode: click to enable the stickermode. Imagine it similar to the sticker boxes that assemblies at C3 would put up.

  • Achievement

    • Mode 1 (anonymous/ user not known): The assemblies gets a redeem token for the user, then they get the token and the profile with the input box opens (similar to found easter eggs). Redeem the redeem code in your profile to unlock the achievement and get the badge.
    • Mode 2 (user / SSO known): The assembly hands out the badge to the user. The user has to accept the badge to receive it.

Users will find collected badges in their profile. Users will always have to actively accept a badge - who wants to suddenly find a pink dolphine vibrator in their profile?

Assign directly via Maschinenraum

Within the Maschinenraum Badges can be directly assigned to users.

Create Redeem Tokens

When automaticly assigning badges to users, Redeem Tokens (TM) are necessary. There are four types of Redeem Tokens: * One-Time: The token can be used exaclty once. * Permanent: The token can be used an unlimited amount of time. * Map: The token can be only used in rc3 World Maps. * Limited: The token can be used an n amount of time.

These can be created via the Maschinenraum (see image) or via API:

Just send a REST POST Request to /api/c/<conference_slug>/assembly/<assembly>/badges/new_redeem_token with the following body:

  issuing_token: <secret_issuing_token>,
  badge_class: <private|public|map|limited>,
  amount: <int>

amount is only necessary if you create a limited redeem token.

How to distribute badges to the users?

Using Redeem Tokens to get the badge

Badges can be distributed via the Redeem Tokens.

User adds it via the frontend

A user can go to his profile (/<conference_slug>/me) and redeem a token in "My badges".

A url is available to auto-fill in the token input field: /<conference_slug>/me/redeem_badge/<redeem_token>. This is perfect to use it in QR codes.

When a user redeems a badge via his profile, it is automatically accepted and set to private on their profile.

Automaticly assign a badge to a user via the API

An API is provided to automatically assign a badge to an user. These badges need to be accepted by the user (/<conference_slug>/me/manage_badges).

Just send a REST POST Request to /api/c/<conference_slug>/badges/redeem_token with the following body:

  token: <redeem_issuing_token>,
  username: <username>
Using the map to assign badges

In the map a tile can be linked to assigning a badge. It works simiar to opening a website, but using the getBadge property instead. Usage of Map Redeem Tokens is required.

API Repsonse

The API always answaers the following when a badge is sucessfully assigned:

  "badge": <badgename>,
  "user":  <username>,
  "created": <True if the badge has been assigned the first time>

Any More Questions?

Please send any questions not covered here to the Assembly Team:

VOC, Streaming and Stuff

There is separate documentation for channels and connected questions:

In case of questions regarding streams please contact: recommended: IRC, #voc-lounge im possible: