Step 1: Install and Start SillyTavern
SillyTavern runs the chat interface, character cards, and prompt settings on your computer. A connected model generates the replies. The official project documentation describes it as a free, open-source frontend.
Prepare Node.js LTS, Git, a GPT Proto account with available API balance, and a model ID. Cloud inference through GPT Proto does not require downloading model weights or running a model on your GPU.
Install on macOS
Download the LTS version from the Node.js download page, select macOS, and use its installer if you prefer a graphical installation.

Choose the current LTS release for your operating system.
Open Terminal and check Git:
git --version
Install Git if necessary, then run:
cd ~
git clone https://github.com/SillyTavern/SillyTavern -b release
cd SillyTavern
bash start.sh
The first launch installs dependencies. Keep the terminal open while using SillyTavern, and open the local address printed there if the browser does not launch automatically. These commands follow the official macOS installation instructions.

The first start downloads the required dependencies.
To launch it again later:
cd ~/SillyTavern
bash start.sh
Install on Windows
Install Node.js LTS and Git for Windows. Create a folder such as C:\AI, open it in File Explorer, type cmd in the address bar, and press Enter. Run:
git clone https://github.com/SillyTavern/SillyTavern -b release
Open the downloaded SillyTavern folder and double-click Start.bat. Leave its console open while chatting. The official Windows guide recommends avoiding Windows-controlled folders such as Program Files and running the startup file without administrator permissions.
Step 2: Connect SillyTavern to GPT Proto
Sign in to GPT Proto and open the GLM-5.3 model page. Its API Usage section provides the model identifier and a Create API Key entry. Create or select your key, check the current rate, and prepare enough balance for a small test.
In SillyTavern, open API Connections, using the plug icon in the top bar. Enter:
| Field |
Value |
| API |
Chat Completion |
| Chat Completion Source |
Custom (OpenAI-compatible) |
| Custom Endpoint / Base URL |
https://gptproto.com/v1 |
| Custom API Key |
Your private GPT Proto API key |
| Enter a Model ID |
glm-5.3 |
| Prompt Post-Processing |
Start with None, as shown in this setup |
Paste the key itself into the key field. Do not add Bearer, quotation marks, or a complete HTTP header there.
The official Custom endpoint instructions specify a base URL without /chat/completions; SillyTavern adds that suffix. For this connection, the endpoint field should end at /v1.
If you previously followed our Janitor AI API setup guide, check this difference: Janitor's Proxy URL uses the complete https://gptproto.com/v1/chat/completions address. Copying that full address into SillyTavern's Base URL field would give it the wrong input.

Match the source, base URL, key, and model ID to the fields above.
Click Connect, then Test Message. You can also send Hello from the welcome screen. The walkthrough produced the reply shown below.

A basic message confirms that the connection can generate a reply.
An empty Available Models list does not necessarily mean generation is unavailable. Enter the exact ID manually when model discovery is unavailable. To switch models later, use another supported GPT Proto text-model ID and test again; model features and accepted parameters can differ.
Step 3: Import a Character Card or Create Your Own
A working API connection supplies the model. The character card supplies the identity, voice, and starting situation.
Import an existing character card
Open Characters → Import Character, select the downloaded card file, and choose the imported character to start chatting. You can also browse characters through Extensions → Download Extensions & Assets.
For PNG cards, download the original file. A normal portrait or screenshot contains no usable character definition unless that data was embedded in the image. The official FAQ explains invalid PNG imports, including cases where saving or processing an image strips its embedded data.
Create Noah Bennett from text
Choose Create New Character. Start with Name, Description, and First Message; you can add advanced fields later. Description tells the model about the character. First Message establishes the opening scene and demonstrates the style you want. The character design guide explains both fields.

Use the character editor for the AI's identity and opening scene.
Set Name to Noah Bennett. Paste this original example into Description. {{char}} refers to the character and {{user}} to your selected user identity.
You are roleplaying as {{char}}, Noah Bennett, a 25-year-old man with a muscular physique, an easy smile, and a warm, affectionate personality.
APPEARANCE
Noah is 188 cm tall, with broad shoulders, strong arms, a defined chest, and strong legs built through years of strength training. He has slightly tousled dark brown hair, warm hazel eyes, light stubble, and a dimple that appears when he grins. His usual clothes are fitted T-shirts, comfortable joggers, and sneakers. His voice is low and warm, and his laugh comes easily.
PERSONALITY
Noah is a sweetheart with playful confidence. He is thoughtful, physically expressive, and comfortable showing affection. He enjoys making {{user}} smile through gentle teasing, thoughtful gestures, and sincere compliments. His appeal comes from the combination of his imposing build and his surprisingly soft heart.
He has his own opinions, friendships, ambitions, and occasional bad days. He sometimes hides nervousness behind a joke and gets adorably flustered when {{user}} catches him being sentimental. He can admit mistakes and laugh at himself.
BACKGROUND
Noah works as a strength coach and hopes to open a small neighborhood gym. Outside work, he enjoys cooking, hiking, terrible romantic comedies, and experimenting with pancake recipes. He takes training seriously but never judges people for their bodies or fitness levels.
RELATIONSHIP WITH {{user}}
Noah and {{user}} are friendly neighbors who have recently started spending more time together. He is attracted to {{user}} and makes his interest apparent through attention, playful flirting, and invitations to do ordinary things together. Let their closeness develop through actual interactions.
FLIRTING STYLE
His flirting is warm, specific, and lightly cheeky. He might hold eye contact a little longer, remember a favorite drink, or admit that he found an excuse to stop by. He notices {{user}}'s responses and adjusts naturally. Affection should feel welcome and mutual.
ROLEPLAY STYLE
Stay in Noah's character during the story. Use natural dialogue, small physical gestures, and concrete details instead of lengthy personality explanations.
Write actions in *asterisks* and dialogue in quotation marks.
Usually respond in one to three short paragraphs, leaving room for {{user}} to participate.
Only control Noah's speech, actions, and thoughts. Leave {{user}}'s dialogue, decisions, and feelings to the user.
Maintain established details and respond directly to what just happened.
Use natural English unless {{user}} requests another language.
Paste this into First Message:
*Noah stands outside your door with a gym bag over one broad shoulder and a small paper bag in his hand. His dark hair is still slightly damp, and his fitted gray T-shirt bears a tiny dusting of flour near the hem.*
"Before you say anything—yes, I can cook things that aren't chicken and rice."
*He lifts the paper bag, a dimple appearing as he smiles.*
"Cinnamon rolls. I made too many." *A brief pause.* "Okay, I made extra because I was hoping to see you."
"So… are you free for coffee?"
Complete the character creation, then select Noah. Keep core instructions in Description and the opening in First Message. Creator's Notes provides metadata for people reading the card and is not used to build the model prompt.

The completed Noah card separates his ongoing identity from his opening greeting.
Set your own Persona
Characters define the AI's identity. Personas define yours. Open Persona Management, create and select a persona, and optionally add a name, avatar, and description, following the official Persona instructions.
For this fictional scene, a short description is enough:
{{user}} is an adult who recently moved into the neighborhood. Noah and {{user}} are friendly neighbors getting to know each other. {{user}} decides their own speech, actions, choices, and feelings.
Use fictional details you want the character to know; you do not need to enter your real biography. For more character-writing ideas, see how to create your own AI character with an API.
Step 4: Start Your First Roleplay Conversation
Open Noah's chat and read the greeting. In the screenshot, the user replies yes, and Noah responds, “Yeah? Okay. Great.” He then continues the coffee invitation with actions and dialogue. That generated continuation is the useful connection check.
For a more specific prompt to try yourself, send:
"So the cinnamon rolls were just an excuse to see me?"
*I glance at the paper bag, then back at him.*
Check whether the reply follows Noah's personality, responds to your latest input, and leaves your decisions to you. If the style needs work, edit one part of the card and try a fresh chat. Avoid changing the model, character prompt, and several settings together; you will have less information about what helped.
Optional: Add World Info to Your Character
World Info, also called a lorebook, adds setting information to the prompt under configured conditions. For a first experiment, add one location from Noah's scene.
Open World Info, create a lorebook, and add an enabled entry using the keyword-triggered strategy. Use these example values:
| Field |
Example |
| Entry title |
Corner Cafe |
| Keys / keywords |
Corner Cafe, Corner Café |
| Content |
Corner Cafe is a small coffee shop one block from Noah's apartment. It has mismatched chairs, strange paintings, and excellent espresso. Noah knows the place, but {{user}}'s preferences have not been established. |
In Noah's character panel, use More… → Link World Info, or the character-lore globe button, to associate the lorebook with him. Then ask, What is Corner Cafe like?
The World Info documentation explains that entry Content is what enters the prompt; the title alone does not supply the facts. Activation also depends on settings and available budget, and the model may not use every supplied detail. Start with one concise entry and check its behavior before adding a large world.
How Much Does SillyTavern Cost with GPT Proto?
GLM-5.3 is the model used for this walkthrough. Choose your model according to budget, dialogue naturalness, emotional expression, character consistency, and response speed. Compare candidates with the same card and opening scene. For daily chats, include retained-context costs in your budget; for story-driven scenes, check whether the voice feels believable and the model leaves your choices to you.
SillyTavern itself is free. GPT Proto model generation uses your API balance. At the time of this guide, GLM-5.3 is 15% below its official input and output rates on GPT Proto:
| GLM-5.3 usage |
GPT Proto rate per 1M tokens |
| Uncached input |
$1.19 |
| Output |
$3.74 |
Rates checked November 3, 2026. See the GLM-5.3 pricing panel for current rates and any applicable cache pricing.
An illustrative request with 8,000 uncached input tokens and 500 billable output tokens costs:
(8,000 ÷ 1,000,000 × $1.19) + (500 ÷ 1,000,000 × $3.74)
= $0.01139
This is a calculation example, not the measured bill for the screenshot conversation. Billable output is not a word count; use the provider's reported usage, including any reasoning tokens billed as output.
Input can include character instructions, Persona, selected lore, and retained conversation history. As the API connection overview explains, SillyTavern assembles these into the prompt. Longer retained context can increase the cost of a reply even when your newest message is only yes.
Why Choose GPT Proto for Your SillyTavern API?
GPT Proto offers official provider models with discounted rates on selected models, including GLM-5.3. One key and a shared balance cover multiple providers. In SillyTavern, keep your character cards and Custom connection, change to another supported chat-model ID, and compare its replies.
For reliability, major models use redundant upstream channels and automatic failover to help reduce interruptions when a channel becomes unavailable. You can choose between models with different prices and conversational styles while keeping your setup.
Before a long session, check model availability, input/output costs, response speed, and data handling. Start with a small test and review usage. The SillyTavern model page lets you explore options and compare costs.
Common SillyTavern API Problems and Fixes
Start with a fresh chat and a short message. Then match the symptom to the next check:
| What you see |
What to check |
First action |
| 401 Unauthorized |
API key |
Paste the key again without extra spaces, quotes, or a Bearer prefix in the UI field. |
| 404 / Not Found |
Endpoint path |
Use https://gptproto.com/v1 as the Custom Endpoint. |
| Model not found |
Model ID |
Copy the exact supported identifier, such as glm-5.3, from its model page. |
| Available Models is empty |
Model discovery |
Try entering the model ID manually. |
| Empty or incomplete reply |
Output allowance, reasoning, context, balance |
Inspect the error and output settings; retry a small request with appropriate limits. |
| Generic assistant response |
Active character and prompt |
Select the intended character and check its Description and First Message. |
| World Info seems ignored |
Association, triggers, budget |
Confirm the lorebook is linked and the entry is eligible for activation. |
Reasoning models need particular attention. The official Reasoning guide explains that thinking can consume response tokens, even when hidden. An allowance too small for that model can leave an empty or unfinished visible reply. Check Max Response Length against the model's requirements rather than applying the same small limit to every model.
One community discussion about lorebooks and empty replies describes a user recovering after removing a preset and increasing the response allowance. Both changed together, so the report does not isolate one cause. It supports a practical troubleshooting order: get a simple chat working, then add presets and lore one change at a time.
Optional: Test the API Outside SillyTavern
With your key stored privately in the GPTPROTO_API_KEY environment variable, this macOS/Linux shell command sends a direct request using the model page's Chat Completions format:
curl --request POST "https://gptproto.com/v1/chat/completions" \
--header "Authorization: Bearer $GPTPROTO_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "glm-5.3",
"messages": [
{"role": "user", "content": "Reply with: API connection works."}
]
}'
Check for a successful response containing generated text, not just a connection indicator. If this works while SillyTavern fails, compare the client's fields and added parameters. If both fail, investigate the returned authentication, balance, model, or service error. Keep real keys out of public troubleshooting posts.