Sharing Bots
One of AI Supreme Council's defining features is shareable bot URLs. The URL is the bot -- the entire bot configuration is encoded directly into the URL fragment. No server is involved, no account is required to open a shared bot, and no data is stored anywhere except in the URL itself and the recipient's browser.
How URL Sharing Works
Bot configurations are compressed and encoded into the URL fragment (the part after #). Since URL fragments are never sent to the server, the bot config travels entirely client-side.
The process:
- Bot config object is serialized to minimal JSON
- The JSON is compressed using Deflate
- The compressed bytes are encoded in Base80 (using the FRAG80 URL-safe alphabet)
- A VLQ version prefix is prepended
The result is a self-contained URL like:
https://aiscouncil.com/#B3kF9xR2mN7pQ...
A typical bot URL is 100-300 characters, depending primarily on system prompt length.
How to Share a Bot
- Open the bot you want to share (click it in the sidebar)
- Click the Share button in the header
- The URL is generated and copied to your clipboard
- Send the URL through any channel -- email, chat, social media, QR code, etc.
You can also right-click the address bar and copy the URL directly after the share button has been clicked, since the URL in the address bar updates to include the encoded bot config.
What IS Shared
The shared URL contains everything needed to recreate the bot:
- Bot name
- Provider and model selection
- System prompt (full text)
- Temperature, max tokens, and all generation parameters
- Advanced settings (top P, frequency/presence penalty, reasoning effort, etc.)
- Persona settings (icon, description, color)
- Council configuration (members, style, chairman, voting mode) if applicable
What is NOT Shared
The following are never included in shared URLs:
| Data | Reason |
|---|---|
| API keys | Security -- keys are always local |
| Chat history | Privacy -- conversations stay on your device |
| Per-bot API key overrides | Security -- treated the same as global keys |
| Local settings | Theme, font size, and other UI preferences are per-device |
| Usage data | Token counts and costs are per-device |
API keys are never encoded into URLs under any circumstances. The bot config schema explicitly excludes key fields during URL encoding. This is a core security guarantee of the platform.
Receiving a Shared Bot
When someone sends you a shared bot URL:
- Open the URL in your browser
- Sign in if you are not already logged in (or the bot may load directly if
auth: 1is set) - The bot config is decoded from the URL fragment and loaded
- Enter your API key for the bot's provider if you do not already have one saved
- Start chatting -- the bot appears in your sidebar with all the sender's settings
The recipient gets an exact copy of the bot configuration but with their own:
- API key (either previously saved or entered fresh)
- Empty chat history (conversations are never shared)
- Local settings (theme, preferences)
URL Format
https://aiscouncil.com/#B{base80_payload}
| Component | Description |
|---|---|
https://aiscouncil.com/ | The app domain |
# | Fragment identifier (not sent to any server) |
B | VLQ version prefix -- B indicates version 1 (Config V2 schema) |
{base80_payload} | Deflate-compressed bot config encoded in Base80 |
The Base80 FRAG80 alphabet uses URL-safe characters to maximize information density in URL fragments without requiring percent-encoding.
Because the bot config lives entirely in the URL fragment (#...), it is never sent to any server. URL fragments are processed client-side only -- this is enforced by the HTTP specification (RFC 3986). When you share a URL, the fragment travels through whatever channel you use to send it (email, chat, etc.), but AI Supreme Council servers never see it.
The Auth Field
Bot configs include an optional auth field that controls whether the recipient needs to be logged in:
| Value | Behavior |
|---|---|
auth: 1 | Public -- anyone can open the bot without logging in |
auth: 0 or absent | Protected -- recipient must sign in before the bot loads |
By default, shared bots require sign-in. Set auth: 1 in the config if you want the bot to be accessible to anyone without an account.
Compression Details
The compression pipeline ensures URLs stay as short as possible:
| Step | Input | Output |
|---|---|---|
| 1. Serialize | Config object | Minimal JSON (short keys, no defaults) |
| 2. Compress | JSON string | Deflate-compressed bytes |
| 3. Encode | Compressed bytes | Base80 string |
| 4. Prefix | Base80 string | B + Base80 string |
Only non-default values are included in the serialized JSON. A bot with default temperature (0.7) and default max tokens (4096) omits those fields entirely, saving space.
Typical URL lengths:
| Bot Type | System Prompt | Approximate URL Length |
|---|---|---|
| Simple bot, no prompt | None | ~80 characters |
| Standard bot | 100 chars | ~150 characters |
| Detailed bot | 500 chars | ~300 characters |
| Council (3 models) | 200 chars | ~350 characters |
Sharing Councils
Council (multi-model) bots can be shared the same way as individual bots. The shared URL includes:
- All member model configurations (provider + model for each)
- Council style (council, compare, arena, moa, router, debate, consensus)
- Chairman index, voting mode, deliberation rounds
- Shared system prompt
The recipient needs API keys for all providers used by the council members. If a council uses three different providers, the recipient needs keys for all three.
Tips for Sharing
- Test your shared URL by opening it in an incognito window to see what recipients experience
- Keep system prompts concise if you want shorter URLs
- Use the auth field (
auth: 1) if you are sharing publicly and do not want recipients to need an account - Shared URLs are self-contained -- they work even if the sender deletes their bot, because the config is in the URL, not on a server