Sandbox. Not production. Throwaway accounts only — no production citizens or SENTRY dumps.

Documentation

Configure NAVCOM AI

NAVCOM-ID and NAVCOM-Bot are one offering. Sign in with Discord or a passkey. We never ask for your phone. Prove your RSI handle once — that same identity works on SENTRY and in Discord. Add the bot so org roles stay in sync. Login does not replace the bot. Privacy: Privacy Policy. Players: Account · /verify. Developers: Sign in with NAVCOM guide (no account needed to read).

Almost every server setting can be managed in two places: the web portal (recommended for bulk setup) and Discord slash commands (great for quick tweaks in-server). Both write the same database; choose whichever is convenient.

Portal: https://navcom.ai/login → Dashboard → Manage servers → select a guild.
Discord: type / and search for NAVCOM commands. Configuration commands default to Administrator; you can open specific commands to other roles under Command access.

Manage UI tabs: Verification · Nicknames · Organizations · Voice · Welcome · Reaction roles · Command access · Security · Members · Bans · Action log · Bot status.

Getting started

1. Portal account

Web UI

  1. Open Login and choose:
    • Passkey — phishing-resistant sign-in (platform or roaming). Headline MFA. TOTP is not stacked on passkeys.
    • Sign in with Discord — no RSI required; creates/links a portal user to your Discord ID.
    • Email & passwordRegister, verify email, then log in. Optional TOTP after password.
    • Passwordless email code — request a 6-digit code (rate-limited). Optional TOTP. No SMS.
  2. Open Account for status (Discord, email, RSI, servers), sessions, and RSI bio verification. Add email only if you need a backup login.
  3. If email and Discord ended up on two separate portal accounts, linking the shared email starts a merge (OTP proof). Different verified RSI handles on each side must be revoked first.
  4. For guild manage UI, Discord must be linked so NAVCOM can see your admin/delegated guilds.

Password reset: Login → Forgot password (email). Account recovery is email plus RSI proof — never Discord-only and never SMS/phone. Session revoke: Account → Sessions. Resend email verification is on the login page.

2. Install the bot on your Discord server

Web UI

  1. Dashboard → Manage servers (requires Discord linked).
  2. Servers appear when you are a Discord Administrator on that guild, or when a role you hold has been granted portal-relevant command access (delegated manage).
  3. If the bot is not installed, click Install bot and complete Discord’s OAuth prompt (Administrator can install).
  4. When status shows Bot installed, click Manage settings.

Full manage (all tabs): Discord Administrator on the guild.
Delegated manage: non-admins only see tabs that map to commands their roles are allowed to use (for example, allow on /actionlog unlocks the Action log tab).

Verification

Members prove ownership of an RSI.com account. NAVCOM stores a global verification (Discord user → RSI handle, works across NAVCOM servers) and can also store a local verification for one guild (staff-asserted, no bio code).

Portal RSI verification (navcom.ai)

Web UI — Account

  1. Sign in (Discord and/or email).
  2. Open Account → Status → Complete RSI verification (guided page).
  3. Enter your RSI handle and continue to receive a one-time bio code.
  4. Paste the code into your RSI profile bio at robertsspaceindustries.com and save.
  5. Return to the guided page and click complete verification. NAVCOM reads the bio via SENTRY (force refresh).
  6. If Discord is linked, the bot writes/updates global verification for that Discord user and refreshes roles/nicknames (same outcome as Discord /verify).
  7. If Discord is not linked yet, the portal stores RSI as verified; linking Discord later promotes global verification.
  8. When already verified, Account only shows Revoke RSI / global verification (with confirmation).

Revoke: Account → Revoke RSI / global verification (parity with /remove_verification for the linked Discord user). Existing global verifications in the database are not bulk-migrated; only explicit verify/revoke/link actions change them.

Handle already verified on another account: the portal shows a conflict warning. Sign in to the other account (or recover it), revoke RSI there, then verify again. Merging two portal accounts also requires that they do not hold two different verified handles.

Private / redacted org memberships: SENTRY and public profile data cannot see orgs a citizen has hidden. Role mapping based on private memberships uses the NAVCOM RSI org extension (sideload for now). Bio-code verification only proves handle ownership; it does not reveal private orgs.

Discord Linked Roles

Native Discord Linked Roles (badge only) use application metadata verified (boolean), enlisted (datetime), and org_rank (integer). There is no string field for Spectrum SID — org membership stays NAVCOM-Bot roles (the law). Players connect via https://navcom.ai/verify (identify + role_connections.write).

Discord member flow

Everyone

/verify [rsi_handle]

1) Run /verify YourHandle to receive a bio code.
2) Paste the code into your RSI profile bio and save.
3) Run /verify again (no handle) to complete.
Roles and nicknames update shortly after success. Completing portal bio verify with Discord linked is equivalent for global status.

Everyone

/remove_verification

Clears your global verification (and pending bio codes) so you can start over. Same intent as Account → Revoke RSI / global verification.

Everyone

/check_verification [user] [rsi_handle]

Inspect verification status for yourself, another user, or a handle.

Admin options

SettingWeb portalSlash command
RSI verified role — Discord role after successful verify Manage guild → Verification tab → RSI verified role /set_verification_role · /unset_verification_role
Verification checkmark — ✅ on nickname when formatting is enabled Verification tab → checkbox With nickname / server settings
Join verification DM — DM new joiners to verify Verification tab → checkbox View with /view_server_config
Clear local on global — drop local verify when global verify succeeds; while enabled, each config save also clears local for anyone who already has both Verification tab → checkbox
Local verify — guild-only verification without bio code Manage guild → Members tab → local verify action on a member /local_verify @user handle · /remove_local_verification
Portal account / sessions Account — email, Discord link/merge, password, session revoke, RSI bio

Organization & rank roles

Map RSI organization short IDs (SID) and ranks to Discord roles. After a member verifies, NAVCOM looks at every org on their RSI profile and assigns roles from your table. Rank numbers: 0 = lowest, 5 = highest. Each cell can grant one or more Discord roles (multi-select).

Main vs Affiliate (the only control)

On RSI, one org is the citizen’s main organization; every other membership is an affiliate. NAVCOM no longer has server-wide “which orgs get roles?” dropdowns. Instead, each org SID row chooses when it applies:

Row modeUI labelWhen roles on that row apply
Combined (default) Main + Affiliate Whenever the member is in this SID — whether it is their main org or only an affiliate.
Split → Main row Main Only when this SID is their RSI main org.
Split → Affiliate row Affiliate Only when this SID is a non-main (affiliate) membership.

Check Split Main + Affiliate to create the Main + Affiliate pair for one SID. Leave a cell empty for “no roles” in that case (e.g. Affiliate ranks empty ⇒ ranks only when main). The Affiliate row’s SID is locked to the Main row.

Mental model: for each RSI membership → is this SID main or affiliate? → look up that SID’s matching row(s) → grant membership roles and the rank (0–5) roles from that row. Unmapped SIDs never grant roles. Mapped SIDs only grant what you put on the matching affiliation row.

How to configure (portal)

  1. Manage guild → Organizations tab.
  2. Add org mapping — enter Org SID (from rsi.com/community/orgs/SID).
  3. Open Member roles and check every Discord role for membership in that org.
  4. Optionally open Rank 0–5 cells and assign leadership / rank roles.
  5. Leave Split Main + Affiliate unchecked for the same roles whether main or affiliate (badge: Main + Affiliate).
  6. Or check Split Main + Affiliate for two rows and set different membership/rank roles (or leave Affiliate empty for “main only”).
  7. Save changes. Use Members → Refresh all roles or /refresh_roles if you need an immediate re-apply.

How to configure (slash)

/add_org_role sid:WILDKNIGHT role:@OrgMember affiliation:Both — affiliation: Both (= Main + Affiliate), Main, or Affiliate.

/remove_org_role · /list_org_roles · /add_rank_role · /remove_rank_role · /list_rank_roles

/refresh_roles — re-apply for verified members in this server.

Deprecated (no longer change behavior): /set_org_role_scope, /set_rank_role_scope, /set_multi_org_behavior — use portal rows instead.

Common recipes (replace old “scopes”)

GoalHow to set rows
Only care about the player’s main org (ignore affiliates) Map your SID(s) with Split on → put all membership + rank roles on the Main row; leave Affiliate empty. (Or use a single Main + Affiliate row only if you accept affiliate memberships too.)
Membership badges for many orgs, ranks only when that org is main For each ally SID: Split → same membership roles on Main and Affiliate; put rank roles only on Main (Affiliate ranks empty).
Full multi-org + multi-rank (every membership and its ranks) One unsplit Main + Affiliate row per SID with membership + ranks filled.
Different roles for home-org mains vs people who only affiliate with you Split Main + Affiliate on your SID: e.g. Main → full ladder; Affiliate → a single “allied member” role and optional flat rank role.

Worked examples

Home org only (classic org Discord)

SID MYORG, Split on:

  • Main: member @MYORG, ranks 0–5 as usual.
  • Affiliate: all empty.

Result: only citizens whose RSI main is MYORG get those roles. Someone who only affiliates with MYORG gets nothing from this mapping.

Alliance: many membership SIDs, ranks only for home

Home SID WILDKNIGHT split (different main vs affiliate packages). Ally SIDs (e.g. ACESS) split with:

  • Main: ally member role(s) + high-rank roles if you want ranks when that ally is their main.
  • Affiliate: same ally member role(s), ranks empty.

A player with main WILDKNIGHT + affiliate ACESS gets WILDKNIGHT Main roles/ranks and ACESS Affiliate membership — not ACESS ranks. A player whose main is ACESS gets ACESS Main membership + ranks.

Same badge for main or affiliate

Unsplit Main + Affiliate with one member role. Anyone in that SID gets the badge regardless of main flag.

Tips & pitfalls

  • Empty Affiliate cells mean “no roles,” not “inherit Main.”
  • Saving after a split writes separate database rows; clearing Affiliate and unchecking split merges back to Main + Affiliate.
  • Rank cells are independent of membership cells — you can grant ranks without a member role (unusual) or member roles without ranks.
  • After big mapping changes, run a role refresh and spot-check a main-org and an affiliate-only verified member.
  • Verification role (Verification tab) is still granted to every verified member, independent of org rows.

Membership & rank scopes (removed)

Older versions had server-wide settings Membership roles — which orgs? and Rank roles — which orgs? (and slash /set_org_role_scope / /set_rank_role_scope / /set_multi_org_behavior). Those stacked confusingly on top of Main/Affiliate rows and are removed.

Equivalent setups now use only the Organizations table — see recipes above. Existing servers were migrated automatically: old “main only” scopes became Main rows (with empty Affiliate where needed); old “all orgs” membership + “main only” ranks became Main + Affiliate membership with ranks on Main only.

Nicknames

OptionMeaning
No changeNAVCOM does not edit nicknames
Org name[SID] Handle
Name orgHandle [SID]
Name onlyRSI name without org tag
Name sourceRSI handle (recommended) or display name
CheckmarkAppend ✅ when verification checkmark is enabled (Verification tab)
Nickname overridePer-member forced nick that supersedes automatic rename

Web UI

Manage guild → Nicknames tab for format and name source.

Per-member overrides: Members tab → set / clear nickname override.

Slash

/set_nickname_config — format and name source.

/set_nickname_override · /clear_nickname_override

Welcome messages

Post a message when someone joins. Full Discord markdown is supported (max 2000 characters).

  • {user} — mentions the new member
  • #onboarding — auto-converts to a channel link if that channel name exists
  • <#1234567890> — raw channel ID mention
  • Backticks, bold, lists, links — allowed

Web UI

  1. Manage guild → Welcome tab.
  2. Pick the welcome channel.
  3. Write the message. A live Discord-style preview renders markdown, mentions, and channel links as you type.
  4. Empty message disables welcome posts.

Slash

/set_welcome_message channel:#welcome message:…

/disable_welcome_message

Dynamic voice channels

Members join a starting voice channel; NAVCOM creates temporary channels (e.g. Squad 01) in a target category and deletes them when empty.

Web UI

  1. Manage guild → Voice channels.
  2. Add a row: starting channel, optional category, base name.
  3. Save.

Slash

/add_dynamic_vc starting_channel:… base_name:Squad target_category:…

/remove_dynamic_vc starting_channel:…

Action log

Optional staff logging: each event type has its own enable toggle and output channel. Point security events at a private mods channel while keeping verification in a general staff log, for example.

Older single-channel configs still work: each type falls back to the legacy channel until you set a per-type channel.

EventWhat it records
VerificationVerify success, local verify, removal
Role changesRoles NAVCOM adds/removes (including bulk refresh)
Nickname changesNickname updates, overrides, resets (including bulk refresh)
Welcome messagesWelcome post sent
Dynamic voiceCreate / join / delete temporary VCs
Member join / leaveOptional join/leave notices (off by default)
Config changesPortal and slash configuration updates
Security / auto-banOrg auto-bans, auto-unbans, related security actions
Org membership / rank When a verified member’s RSI orgs change on recheck: joined/left org, rank change, or main-org switch (with a short summary of current orgs). On by default; uses the same channel as role changes until you set a dedicated channel.

Web UI

  1. Manage guild → Action log.
  2. For each row: toggle On and pick an output channel (bot needs Send Messages + Embed Links there).
  3. Optional bulk tools: apply one channel to all rows, enable all, disable all.
  4. Save. Enabled types with channel None do not post.

Slash

/actionlog set — enable/disable one type and set its channel

/actionlog set_all — same channel (and optional enable) for every type

/actionlog view — show per-type status and channels

/actionlog disable — disable one type or all (keeps channel assignments)

Legacy: /actionlog channel (all types → one channel), /actionlog events (toggle without changing channel).

Security — org auto-ban

Admins can list RSI organization SIDs that should not have verified members in the server. When a Discord user is verified (or membership is rechecked) and their RSI profile includes any listed org, NAVCOM bans that account automatically.

  • Only applies to users with global or local verification (unverified members are not scanned this way).
  • The bot needs the Ban Members permission, and its role must be high enough to ban the target.
  • Bans are recorded so NAVCOM can optionally reverse only its own auto-bans.
SettingMeaning
Blocked org SIDs One or more org short IDs (e.g. HOSTILEORG). Membership in any listed SID triggers a ban.
Unban when they leave blocked orgs If enabled, NAVCOM periodically rechecks auto-banned users. If their RSI profile no longer includes any blocked SID, they are unbanned. Manual Discord bans are never lifted.

Web UI

  1. Manage guild → Security tab.
  2. Add org SIDs (one per row).
  3. Optionally enable Unban when they leave blocked orgs.
  4. Save. Verified members are rechecked; matches are banned.

Slash commands

/orgautoban add org_sid:…

/orgautoban remove org_sid:…

/orgautoban list

/orgautoban unban_on_leave enabled:True/False

Action log

Enable Security / auto-ban under the Action log tab and choose a channel (often a private mods channel) to post embeds when NAVCOM auto-bans or auto-unbans a member.

Common setup: keep rival-org members out

  1. Add each rival org SID on the Security tab.
  2. Action log → enable Security / auto-ban and pick a staff channel.
  3. Tell staff that bans show the RSI handle and matched org SIDs.
  4. Optional: enable unban-on-leave if someone is expected to leave that org and rejoin later.

Members & bans

The Members tab lists Discord members in the server with verification status, RSI handle, orgs/ranks (optional), roles, nickname, and actions. Use the filter row under each column header (partial text, verify status, role, presence). Click a column header to sort.

  • Load / refresh list — fetch current members (org lookup can be slow on large servers; toggle “Include RSI orgs”).
  • Refresh all roles — re-apply roles for verified members (portal parity with /refresh_roles).
  • Local verify — guild-only verify by RSI handle without bio code.
  • Remove local — drop guild-only local verification (global may remain).
  • Nickname override — supersedes automatic rename. Web UI or /set_nickname_override / /clear_nickname_override.
  • Clear local on global — Verification tab option to auto-remove local verify when the user completes global /verify.

The Bans tab lists Discord bans, flags NAVCOM auto-bans, filters by name/id/reason/org, optionally shows only NAVCOM auto-bans, and lets admins ban/unban by user ID (requires Ban Members). Unban clears Discord ban and NAVCOM auto-ban tracking for that user.

If a periodic recheck finds the RSI handle is gone (SENTRY/RSI 404), NAVCOM removes global and local verification for that Discord user and refreshes roles/nicknames.

Bot status & permissions

Manage guild → Bot status tab (or the dedicated status page) shows which Discord permissions the bot holds, which features are blocked when permissions are missing (highlighted), and which permissions are held but not required for NAVCOM features.

Each settings tab also shows a warning when the bot lacks permissions for that feature (for example, Ban Members on Security).

Reaction roles

Map emoji reactions on a Discord message to roles. When a member adds or removes the reaction, NAVCOM grants or removes the role.

Web UI

  1. Enable Developer Mode in Discord → right-click the message → Copy Message ID.
  2. Manage guild → Reaction roles.
  3. Add a row: message ID, emoji, role. Use the emoji picker (search unicode categories, or the Server tab for this guild’s custom emojis), or paste unicode / <:name:id>.
  4. Save changes.

Slash

/set_reaction_role message_id:… emoji:… role:… [channel:…]

/remove_reaction_role message_id:… emoji:… [role:…]

/list_reaction_roles

The bot needs Manage Roles (and its role above the roles it assigns) and permission to add reactions / manage messages in that channel as required by Discord.

Command access

Override who may use specific slash commands. Without custom rules, admin-only commands require Discord Administrator; public commands stay open to everyone. Deny always wins over allow.

Granting a role allow on a configuration command also unlocks the matching portal tab for members with that role (delegated manage). Examples: allow /actionlog → Action log tab; allow /local_verify → Members tab; allow /orgautoban → Security (and related) access mapping.

Web UI

  1. Manage guild → Command access.
  2. Add a role section, then add allow/deny rules for individual commands.
  3. Rules are grouped by role. Save changes.

Slash

/grant_command_access command_name:… role:…

/deny_command_access command_name:… role:…

/list_command_permissions [command_name:…]

/clear_command_permission command_name:… role:…

Lookups & help

Everyone

/citizen handle:… · /org sid:…

SENTRY-backed player and organization cards with links back to the SENTRY site.

Everyone

/help command_name:…

Short usage help for a specific command.

The former Star Citizen news / Comm-Link posting feature has been discontinued and removed from Discord and the portal.

Common use cases

A. Org server with verified members + main-org ranks

  1. Install bot; set verified role (e.g. @Verified).
  2. Organizations: map your SID. Check Split Main + Affiliate; put member role + ranks 0–5 on Main; leave Affiliate empty.
  3. Nicknames: Name only or Name org; source = RSI handle; optional checkmark.
  4. Welcome: channel + message with /verify and #rules (preview in portal).
  5. Action log: enable Verification + Role changes to a staff channel (per-type channels optional).
  6. Announce: “Run /verify YourHandle after adding the bio code.”

B. Multi-org alliance (many memberships, ranks only for primary)

  1. Home SID: Split Main + Affiliate with full ranks on Main (and optional different Affiliate package).
  2. Each ally SID: Split on — same membership roles on Main and Affiliate; ranks only on Main (or only map ranks on the home SID).
  3. Save; run /refresh_roles (or Members → Refresh all roles) if needed.
  4. See organization role recipes for the full matrix.

C. Event / pickup voice rooms

  1. Create a voice channel “Join for Squad” and a category “Active Squads”.
  2. Dynamic VC: starting = Join for Squad, category = Active Squads, base name = Squad.
  3. Players join the starter channel → temporary Squad 01, Squad 02… appear and clean up when empty.

D. Staff audit trail without spam

  1. Action log → enable Verification and Config changes on a staff channel.
  2. Send Security / auto-ban to a private mods channel with its own row.
  3. Leave Member join/leave off unless you want high volume.
  4. Turn off Role or Nickname changes if bulk refreshes are too noisy for that channel.

E. Block rival org members

  1. Security tab → add rival org SIDs → save.
  2. Action log → enable Security / auto-ban → private staff channel.
  3. Optional: unban-on-leave if people may leave that org later.

F. Let mods manage without Administrator

  1. Command access → grant your @Mods role allow on the commands they need (e.g. local_verify, actionlog, set_nickname_override).
  2. Mods link Discord on the portal and open Manage servers — they only see the matching tabs.
  3. Keep grant_command_access itself admin-only so only admins change access rules.

Command reference (summary)

Everyone

/verify · /remove_verification · /check_verification · /citizen · /org · /help

Administrator by default (override with Command access)

/set_verification_role · /unset_verification_role · /add_org_role · /remove_org_role · /list_org_roles · /add_rank_role · /remove_rank_role · /list_rank_roles · /set_org_role · /set_rank_role (aliases of add) · /set_nickname_config · /refresh_roles · /view_server_config · /local_verify · /remove_local_verification · /set_welcome_message · /disable_welcome_message · /add_dynamic_vc · /remove_dynamic_vc · /actionlog set · /actionlog set_all · /actionlog view · /actionlog disable · /actionlog channel · /actionlog events (legacy) · /orgautoban add|remove|list|unban_on_leave · /set_nickname_override · /clear_nickname_override · /set_reaction_role · /remove_reaction_role · /list_reaction_roles · /grant_command_access · /deny_command_access · /list_command_permissions · /clear_command_permission

Permissions the bot needs

  • Manage Roles — assign verified / org / rank / reaction roles (bot role must sit above roles it assigns).
  • Manage Nicknames — nickname formats and overrides.
  • Ban Members — org auto-ban (Security) and portal ban/unban; also needed for auto-unban when enabled.
  • Send Messages · Embed Links — welcomes, action logs, lookups.
  • Manage Channels · Move Members — dynamic voice (recommended).
  • View Channels · connect to voice as needed for VC features.
  • Add Reactions / message permissions — reaction roles (as required by Discord for the target channel).

Portal access: Discord Administrator gets full manage UI. Non-admins with command-access allow rules get the matching tabs only. Installing the bot requires Administrator (Discord OAuth install flow).

Troubleshooting

SymptomWhat to try
Verify says code not found Confirm bio saved on RSI; wait a minute for SENTRY refresh; re-run /verify; ensure exact code.
Roles not applied Bot role hierarchy above target roles; Manage Roles permission; correct org SID; run /refresh_roles.
Nickname not changing Format not “No change”; Manage Nicknames; no nickname override set; member not server owner (Discord restriction).
Portal can’t see servers Discord linked (or Sign in with Discord); you are Administrator or hold a role with command access; re-link Discord if the token expired.
Portal manage shows limited tabs You have delegated access only — tabs match commands granted to your roles. Ask an admin for more command access if needed.
#channel not linking in welcome Exact channel name (usually lowercase-with-hyphens); or use raw channel ID mention. Check the live preview in the Welcome tab.
Action log silent Event type enabled; that type’s channel set (or legacy fallback channel); bot can Send Messages + Embed Links in that channel.
Auto-ban not firing User is verified; SID matches RSI org (case-insensitive); bot has Ban Members; bot role is above the member; check Security action log events.
Auto-unban not firing Unban-on-leave enabled; ban was issued by NAVCOM (tracked); profile no longer lists any blocked SID; bot can unban.
Reaction role not applying Correct message ID; emoji matches exactly; bot Manage Roles + hierarchy; mapping saved; bot can see the message channel.
Slash command says no permission Default is Administrator for config commands; check Command access allow/deny for your roles (deny wins).

More help: Portal · SENTRY · Privacy · Terms