Documentation
Origami documentation
Origami is a privacy-focused identity, profile, and proxying bot. Identity data such as systems, members, groups, and profiles can follow you between servers, while moderation settings and restrictions remain local to each server.
The in-bot help menu is intended as a quick reference. This page expands on those same features with more context, examples, and behaviour notes.
Getting started
A basic Origami setup starts with a system, then one or more members, followed by proxy tags.
-
Create a system.
og!system new <name> -
Create a member.
og!member new <name> -
Add a proxy tag.
og!member proxyadd <member> [text] - Send a proxied message. Use the proxy tag pattern around your message.
-
Optionally enable latch mode.
og!latch on
Systems
Systems are top-level identity containers for members, groups, switches, profiles, and linked accounts. You can have multiple systems, but one is active at a time.
Common system commands
og!system
og!system new <name>
og!system list
og!system use <ID>
og!system rename <name>
og!system description <text>
og!system tag <tag>
og!system nameformat <format>
og!system pronouns <text>
og!system color <hex>
og!system delete
Proxy name formatting
{name} is required and represents the member name
or display name. {tag} is optional and represents
the system tag.
Examples include {name}{tag},
{tag} {name}, [{tag}] {name}, and
{name}.
Members
Members are identities inside an Origami system. Member profiles can include names, display names, pronouns, descriptions, birthdays, colours, avatars, banners, webhook avatars, and proxy tags.
Members can be resolved by short ID, canonical name, or display name without case-sensitive name matching.
Viewing and creation
og!member <name/id>
og!member list
og!member new <name>
Editing
Origami supports both action-first and PK-style member-first command forms.
og!member rename <member> <name>
og!member <member> rename <name>
og!member displayname <member> <name>
og!member pronouns <member> <text>
og!member description <member> <text>
og!member birthday <member> <value>
og!member color <member> <hex>
Images
og!member avatar <member>
og!member banner <member>
og!member webhookavatar <member>
Deletion
og!member delete <member>
Proxying
Proxy tags let messages appear using a member's name and avatar while Origami retains attribution to the real Discord account.
Proxy tags
og!member proxy <member>
og!member proxyadd <member> [text]
og!member proxyremove <member> <number>
The word text marks where the message goes. For
example, [text] turns [hello] into
hello sent as that member.
Latch mode
og!latch on
og!latch
og!latch off
While latch mode is enabled, using an explicit proxy tag selects that member as the active latch. Normal messages afterwards continue proxying as that member until you switch again or disable latch mode.
One-message bypass
Start a message with \ to prevent Origami from proxying
that one message while keeping your current latch state active.
Start a message with \\ to prevent Origami from proxying
that message and disable your current latch state.
Examples:
\hello stays as a normal Discord message,
while \\hello stays normal and also turns latch mode off.
Managing proxied messages
og!edit <new text>
og!delete
Moderator reaction controls
These reactions are moderation controls and require the Discord Manage Messages permission. Reactions from other users are removed without performing the action.
- ❓ identifies the real Discord account without pinging it.
- 🔔 pings the real Discord account that sent the proxy.
- ❌ deletes the proxied message and removes its Origami proxy record.
Proxy senders can still manage their own proxied messages with
og!edit and og!delete; they do not need moderator
reaction access for those commands.
Groups
Groups organise members and can have their own profiles. Groups can also be nested inside parent groups.
og!group <name/id>
og!group list
og!group new <name>
og!group add <group> <member>
og!group remove <group> <member>
og!group rename <group> <name>
og!group description <group> <text>
og!group color <group> <hex>
og!group parent <child> <parent>
og!group icon <group>
og!group banner <group>
og!group delete <group>
Switches & privacy
Switch tracking
og!switch
og!sw
og!switch set <members>
og!switch end
Switch history belongs to the system and can also be imported from PluralKit.
Privacy controls
og!privacy system
og!privacy member <member>
og!privacy group <group>
og!privacy set <type> <target> <field> <visibility>
og!privacy reset <type> <target> [field]
Visibility can be public or private. Public
fields can be shown normally; private fields require an authenticated
Discord account linked to that system. Privacy is field-based, so names,
descriptions, avatars, pronouns, proxy tags, and group membership
can have separate visibility settings. A direct system link never
upgrades a viewer's access: private fields are only returned after
Origami verifies that the signed-in Discord account is linked to the system.
Linked accounts
Multiple Discord accounts can be linked to the same Origami system while remaining separate real users for attribution and server moderation.
og!account link
og!account link <code>
og!account list
og!account unlink
Link codes are sent privately by DM, expire after 10 minutes, and can only be used once. The second Discord account must redeem the code itself.
Linked accounts share the same system, members, groups, proxy tags, privacy settings, and other identity data. Proxy-message ownership and moderation still identify the exact Discord account that sent the message.
Configuration
These settings control defaults for the active system or the current linked Discord account.
og!config
og!config private-members on/off
og!config private-groups on/off
og!config proxy-case-sensitive on/off
og!config proxy on/off
Private-member and private-group settings affect newly created entities. They do not silently change existing privacy settings. Proxy case sensitivity also applies as a default for new proxy tags.
Proxying can be disabled for one linked Discord account without unlinking it or disabling proxying for other linked accounts.
Moderation
Origami moderation is server-local. Restrictions in one server do not become cross-server reputation or punishment.
Server proxy controls
og!proxyoff
og!proxyon
Channel blacklist
og!proxyblacklist
og!pbl
og!proxyblacklist add #channel
og!proxyblacklist remove #channel
Logging
og!proxylog
og!proxylog #channel
og!proxylogoff
og!deletelogsource
og!deletelogsource #channel
og!deletelogsourceoff
Restrictions
og!proxyban @user [duration] [reason]
og!proxyunban @user
og!proxymemberban @user <member> [duration] [reason]
og!proxymemberunban @user <member>
og!who
Account bans target the actual Discord account, so changing member identity cannot bypass a moderation restriction. Origami also waits briefly before proxy delivery; if moderation deletes the original message before delivery, the proxy is cancelled.
Migration
og!import pk
og!import tupper
Imports are isolated from unrelated Origami systems. PluralKit and Tupperbox data are kept in their own imported systems rather than being merged into whichever system is currently active.
Re-importing the same source updates the same imported system and mapped members, groups, proxies, and profile data instead of creating duplicates.
PluralKit token
DM PluralKit and run pk;token. Origami requests the
token through a private modal, uses it only while fetching the
import, and does not store the token.
Imported profile images are stored in Origami's own asset storage instead of depending permanently on PluralKit image URLs.
Status & diagnostics
og!ping
The live status panel shows gateway latency, database health, uptime, connected server count, version, and status-generation time.
Detailed health includes build commit, environment, loaded extensions, Python version, and discord.py version, while avoiding sensitive details such as database credentials, hostnames, filesystem paths, internal asset URLs, and raw exception details.
Command reference
Command examples throughout this page are grouped by the feature they belong to. Angle brackets indicate required values and square brackets indicate optional values.
Troubleshooting
My message did not proxy
Check that proxying is enabled for your linked account and the current server, that the channel is not blacklisted, and that your proxy tag matches the configured case-sensitivity behaviour.
A field is not visible
Origami privacy is field-based. Check the privacy setting for the specific field on the system, member, or group.
My import created or updated a separate system
This is expected. Imports are kept isolated from unrelated Origami systems, and re-imports update the mapped imported system rather than merging into the active one.
A linked account is restricted in one server
Moderation remains tied to the exact Discord account that sent the proxied message. Linked accounts share identity data, not moderation identity.
About Origami
Team
Z3R0 — Developer. Built and maintains Origami, including the bot, backend, infrastructure, migrations, moderation tools, and overall design.
Fishy — Artist. Creates Origami's artwork and helps shape its visual identity and personality.
Special thanks
Redbull Collective, LabMCL, and The Mockingbird Collective have contributed testing, feedback, migration testing, and edge-case reports during development.