ScenePulse is a SillyTavern extension that automatically extracts and tracks scene data from AI responses — characters, relationships, quests, mood, tension, and more — all displayed in a real-time dashboard alongside your roleplay.
Important
ScenePulse ships 39 built-in model presets (DeepSeek, Claude 4.6/4.7, GPT-5.4, Gemini 2.5/3, Kimi, GLM 4.6/5/5.1, Grok 4, Cydonia, Magnum, Magidonia, Behemoth, Anubis-Pro, EVA-Llama, Midnight Miqu/Rose, MythoMax, etc.), but every model + provider + sampler combination has its own quirks. If you've found settings that improve tracker JSON quality, narrative coherence, or structured-output reliability for your model, we want to ship them to every user.
What helps most:
- Sampler values (temperature / top_p / freq-penalty / presence-penalty) that improve JSON compliance on a specific model
- System-prompt role tweaks (e.g.,
uservssystemfor Claude / DeepSeek thinking models) - Prompt-slot overrides that fix prose-instead-of-JSON failures, especially on NSFW / long-context / reasoning models
- Anti-stagnation tunings, anti-
charactersPresent-carry-forward fixes, name-awareness improvements - New presets for models we don't ship — finetunes, niche providers, jailbreak variants, local models
How to contribute (pick whichever is easier):
- 💬 Quick suggestion → open an issue describing your model + the change that worked. Even one-line tips are valuable.
- 📁 Tested preset → submit a PR adding a
.jsonfile topresets/— seepresets/README.mdfor the schema andpresets/_examples/for working examples. - 🛠️ Built-in tuning improvement → if you'd improve one of the 30 bundled presets, open a PR against
src/presets/built-in.jswith the model id and the rationale.
Your contributions ship to every user. The more real-world tunings we collect, the better ScenePulse works out-of-the-box for everyone.
- Features
- Installation
- Quick Start
- How It Works
- Architecture
- Compatibility
- Configuration
- Custom Panels
- Known Issues
- Changelog
- Contributing
- License
- Environment cards — time, date, weather, temperature, location with animated weather icons
- Scene details — mood, tension, topic, interaction style, sound environment
- Real-time updates every AI message
- Animated meter bars for affection, desire, trust, stress, compatibility (0–100)
- Unique per-meter delta icons — emotionally distinct up/down variants: heart/cracked heart (affection), Adinkra symbol/X'd symbol (desire), star/broken star (trust), calm shield/lightning bolt (stress), linked/separated rings (compatibility)
- Mini sparklines with dark background and 20% gridlines — always visible, even with <2 data points
- Full-screen SVG graph on click — last 30 data points, all meters overlaid, clickable legend, hover tooltips with message preview, click data points to navigate to that message
- Delta indicators showing +/- changes (green up, red down, yellow stress increase, green stress decrease)
- Previous-value white marker on the bar showing where the meter was last update
- Relationship phase, milestones, and time together
- Confidence-based color matching between character and relationship cards
- North Star — overarching life purpose
- Main Quests, Side Quests, Active Tasks — tiered and collapsible
- Quest lifecycle — NEW (teal badge), UPDATED (amber badge), RESOLVED (green badge, strikethrough)
- Urgency indicators (critical/high/moderate/low/resolved) and detailed descriptions
- User quest management — complete (✓), remove (✕), undo, and add quests directly
- Perspective enforcement — quests always framed from the user's point of view
- Full appearance tracking: hair, face, outfit, state of dress, posture
- Inner thoughts, immediate needs, short/long-term goals
- Inventory tracking
- Optional fertility status fields with full field-level granularity
- Smart name resolution when models omit the
namefield
- Full-screen browser for every character ever encountered, not just those currently in scene
- Walks all snapshots once on open to aggregate first seen, last seen, appearance count, last known location
- Per-character cards with appearance grid, relationship meters with mini sparklines, goals, inventory, fertility, history metadata
- Search, filter pills (All / In Scene / Absent), sort options (name, first seen, last seen, appearances, relevance)
- Compact grid view, per-character user notes, avatars, JSON / MD export
- Reachable from the toolbar (book icon)
- SVG circular graph of all characters with relationship edges
- Edge weight reflects relationship strength; node color matches per-character color assignment
- Reachable from the Character Wiki header
- 5 AI-generated plot directions per update (dramatic, intense, comedic, twist, exploratory)
- One-click paste to edit or inject directly into chat
- Mini sparklines inline next to each relationship meter — dark background with 20% gridlines, glowing data lines
- Full-screen SVG graph on click — all 5 meters overlaid, clickable legend to focus, area fill under focused line, value labels on data points
- Clickable X-axis labels — click any snapshot number to load that historical state
- Stats bar — snapshots, data points, current value, average
- Fuzzy name matching across snapshots (handles "Nova" vs "Nova Glaciara")
- Analytics panel — full-screen overlay with per-snapshot token breakdown
- Summary cards: total tokens, snapshots, avg generation time, total time, session tokens, avg delta savings
- Source breakdown: together/separate/fallback counts, fastest/slowest generation
- Per-snapshot table with tokens, time, source, delta savings
- Accessible from the stats footer
- 5 themes: Default, Midnight, Fantasy, Cyberpunk, Minimal
- Live CSS variable switching — changes instantly, no reload
- Theme selector in Settings > General
- Self-contained profile bundles — each profile owns its own
{schema, systemPrompt, panels, fieldToggles, dashCards, customPanels} - Switch profiles via dropdown in Settings → Prompts (e.g. Medieval Fantasy ↔ Pokemon ↔ Modern Slice-of-Life) without manually editing prompts and schemas
- Full Profile Manager overlay — list view with active marker, inline rename / duplicate / clear panels / export / delete
- Per-chat override — a chat can pin its own profile via
chatMetadata.scenepulse.activeProfileId(resolution order: per-chat → global → first profile) - Import / export — share profiles as
.jsonfiles; auto-suffixed name on collision, never overwrites - Read-through architecture — switching is
s.activeProfileId = newId, no destructive copy, no risk of mid-edit data loss - Force-full regen on switch (delta against a different schema is nonsensical)
- Existing setups auto-migrated into a "Default" profile on first load — nothing lost
/sp-profile [name]slash command for chat-input switching
- Combined crash log — captures errors from both ScenePulse AND the host SillyTavern via
window.error,window.unhandledrejection, and ScenePulse-internalerr()calls. Tagged by source. - Persistent across reloads — hybrid storage (in-memory ring buffer + localStorage mirror + server file flush to
data/<user>/user/files/scenepulse-crash-log.json) - Privacy-conscious — only stack + metadata + version, no message content by default
- Debug Inspector overlay (Settings → Advanced → Debug → 🔍 Debug Inspector) with three tabs:
- Activity — chronological logger.js debug log with level filter, search, live refresh, copy, export
- Last Response — pretty-printed raw LLM JSON from the most recent generation
- Crashes — severity + source filters, expand-for-stack rows, copy entry, copy all, clear, "Report on GitHub" per row that pre-fills a new-issue template with the captured stack
- One-click "Reduce visual effects" toggle in Settings → General disables the animated dashboard canvas, particles, shimmers, and decorative blend modes — recommended for laptops or integrated GPUs
- Honors OS-level
prefers-reduced-motionautomatically — no toggle needed - WDM canvas throttled to ~20fps and paused via
IntersectionObserverwhen off-screen even when enabled
/sp status— Show tracker state summary (with active profile)/sp regen [section]— Regenerate tracker (optional: dashboard, scene, quests, relationships, characters, branches)/sp refresh— Force a full-state regeneration (bypass delta mode, reset drift counter)/sp clear— Clear all tracker data (with confirmation)/sp toggle <panel>— Toggle a panel on/off (built-in OR custom panel name; case-insensitive)/sp profile [name]— List profiles, or switch to one by name (case-insensitive)/sp export— Export tracker history + profiles as JSON/sp debug— Show diagnostics/sp help— List commands
Standalone shortcuts: /sp-status, /sp-regen, /sp-refresh, /sp-clear, /sp-toggle, /sp-profile, /sp-export, /sp-debug, /sp-help. Alias: /scenepulse <subcommand>.
Template variables for use in character cards, system prompts, Quick Replies. Re-read live on every prompt build — values stay current across generations.
Scene state:
{{sp_location}},{{sp_time}},{{sp_date}},{{sp_mood}},{{sp_tension}}{{sp_weather}},{{sp_topic}},{{sp_temperature}},{{sp_summary}},{{sp_northstar}}
Aggregations:
{{sp_characters}}— comma-separated names of characters present in the current scene{{sp_char_count}}— present-character count (for{{#if}}conditionals){{sp_relationships}}— formatted"Jenna (lover, aff:75), Reyes (rival, aff:30)"{{sp_quests}}— active quest names (main + side){{sp_main_quests}}/{{sp_side_quests}}— split tiers{{sp_quest_count}}— non-resolved quest count{{sp_active_profile}}— name of the active ScenePulse profile
- Floating, draggable panel showing each character's inner monologue
- Ghost mode (transparent), snap-to-edge, resizable
- Dynamic autofit — panel adjusts when window resizes, never overlaps chat area
- Weather overlay — rain, snow, hail, fog, sandstorm, aurora, ash with particle systems
- Time-of-day tint — dawn, morning, afternoon, dusk, evening, night ambience
- Scene transitions — feathered location change popups with backdrop blur and soft radial fade
- Every AI message creates a snapshot (unlimited storage by default, configurable)
- Timeline scrubber — click any dot to load historical scene data and scroll to the message
- "Browse All" button — paginated snapshot list (10 per page) with time, location, tension, character count, token usage
- Click any row to jump to that snapshot and scroll to the message in chat
- Historical message navigation — automatically loads lazy-loaded messages via ST's
showMoreMessagesAPI - Message highlight — JS-driven glow pulse with graceful fade when scrolling to a message
- 200ms debounced navigation for smooth scrubbing
- Built-in diff viewer for debugging tracker data
- 5 view modes: Changes Only, Full Diff, Side by Side, Delta Payload, Previous/Current
- Green/red line-level diff with context collapsing
- Copy to clipboard, works on current and historical timeline nodes
- Create panels to track anything — health, mana, reputation, faction standings
- Each field supports text, number, meter, list, or enum types
- LLM hints tell the AI what to output for each field
- LLM returns only changed fields instead of echoing the full snapshot
- Client-side delta merge preserves unchanged data from previous snapshot
- Reduces output tokens by ~70–90% on subsequent messages
- Delta savings displayed in stats footer with hover tooltip
- Experimental — may not work with all models
- Auto-corrects LLM time regressions and implausible jumps before they reach the timeline (no more #60 16:15 → #62 14:52 → #64 15:00 surprises)
- Three block rules — backward without flashback signal, forward exceeding 2× the model's
elapsed, forward >1h with noelapsedclaim - Respects intent — the model can declare a flashback or time-skip via the optional
temporalIntentschema field (continue/flashback/timeSkip/parallel), or annotate theelapsedfield with(flashback)/(time skip)/(meanwhile). Cross-date jumps are always trusted. - Respects you — manual time edits via the panel are stamped
userEditedand never auto-overridden - Anti-cascade guard — refuses to anchor on a previously-rewritten snapshot, so one bad turn can't poison every subsequent classification
- Skips group chats cleanly (per-character clocks deferred to a future release)
- Register
update_scene_trackeras an LLM function tool via SillyTavern's ToolManager - When supported (OpenAI, Claude, Gemini), the tracker API call uses structured tool calling instead of text prompt
- More reliable JSON output, no parsing needed
- Status badge in footer: Tool OK (green), Tool Miss (red), Tool Standby (purple)
- Has no effect in Together mode
- Full UI translation — every section header, badge, tooltip, button, dialog, and setting
- LLM output localization — narrative string values generated in the selected language
- Enum values translated at display time (tension, dress state, fertility, meter labels)
- Auto-detect from SillyTavern's locale or manual override
- Live language switch — changes take effect immediately, no reload required
- Languages: Chinese (Simplified/Traditional), Spanish, Hindi, Arabic, Portuguese, Russian, Japanese, French, German, Korean, Turkish, Vietnamese, Italian, Thai, Polish, Ukrainian, Indonesian, Dutch, Romanian, Czech, Greek, Hungarian, Swedish, Malay, Finnish, Danish, Norwegian, Hebrew
:focus-visibleoutlines on all interactive elements for keyboard navigation@media (prefers-reduced-motion: reduce)disables all animations- Status badges include text indicators alongside color
- Settings organized into General, Generation, Prompts, and Advanced tabs
- "Enable ScenePulse" checkbox always active even when extension is disabled
- Schema editor with lock/unlock and confirmation dialog
- Config export/import as shareable JSON
Alt+Shift+P— Toggle ScenePulse panelAlt+Shift+R— Regenerate tracker (with loading animations)Escape— Close overlays (diff viewer, graph, confirm dialogs)
- Update check on startup via ST's
/api/extensions/versionendpoint with proper auth headers - Amber pulsing dot on brand icon when update available — icon glows amber in sync
- Update banner at top of panel: "Update Available" with "Update & Reload" button
- One-click update calls ST's
/api/extensions/update(git pull) then reloads the browser - "Later" dismisses the banner; clicking the glowing icon re-shows it
- Installing/success/error states with visual feedback
- Branch and commit hash displayed in settings header
- Adjustable font size slider (0.7x–1.5x) in settings
- Scales only text — layout elements (toolbar, meters, icons) unaffected
- Dashboard cards excluded from scaling
- Full-screen panel with slide animations
- Custom top bar replacing SillyTavern's toolbar
- Touch-optimized 42px tap targets
- Floating restore icon in ST's send form
- Post-generation banner notifications
- Open SillyTavern
- Go to Extensions → Install Extension
- Paste the URL:
https://github.com/xenofei/SillyTavern-ScenePulse - Click Install
- Reload SillyTavern
cd SillyTavern/data/default-user/extensions/third-party
git clone https://github.com/xenofei/SillyTavern-ScenePulseRestart SillyTavern after cloning.
- Install the extension using either method above
- Open a chat with any character
- ScenePulse appears as a side panel (desktop) or radar icon (mobile)
- Send a message — the AI automatically appends tracker data
- The dashboard updates with scene intelligence
On first load, ScenePulse shows a Setup Wizard to configure:
- Fallback profile — a dedicated connection profile for when the AI omits tracker data
- Fallback preset — optimized sampler settings for JSON output
- Auto-recovery — whether to automatically retry when the tracker is missing
You can also take a Guided Tour to explore every feature with example data.
ScenePulse operates in Together mode by default:
- A tracker prompt is injected into the AI's context via SillyTavern's interceptor
- The AI writes its normal narrative response, then appends a JSON block wrapped in
<!--SP_TRACKER_START-->/<!--SP_TRACKER_END-->markers - ScenePulse extracts the JSON, strips it from the visible message, and updates the dashboard
- A regex filter (
markdownOnly: true) strips tracker JSON from the DOM during markdown rendering — preventing the payload from ever being visible during streaming - A streaming hider (MutationObserver + 20ms polling) provides a CSS fallback layer
- Malformed JSON is automatically repaired by the vendored
jsonrepairlibrary (handles trailing commas, unquoted keys, unescaped quotes inside strings, single-quoted values, Python literals, comments, markdown fences, and ~20 other common LLM JSON errors via a tokenizer-based parser) - Post-extraction schema validation warns about missing fields or invalid enum values
If the AI omits the tracker, ScenePulse can automatically fall back to a separate API call using a dedicated connection profile.
Alternatively, ScenePulse can run a completely separate API call after each message — useful for models that struggle with inline instructions. Supports optional function tool calling for structured JSON output.
When enabled, the LLM returns only fields that changed since the last snapshot. The client merges the delta with the previous snapshot, reducing output tokens by ~70–90%. Entity arrays (characters, relationships, quests) are merged by name at the field level.
When embedding multiple snapshots in the generation prompt, ScenePulse selects the most significant state changes (location changes, new characters, quest completions, tension shifts) rather than just the N most recent.
ScenePulse v6.x uses a modular ES module architecture with ~46 focused modules:
index.js ← Thin entry point (~320 lines)
style.css ← @import directives only
src/
constants.js ← Defaults, schemas, prompts, panel definitions
logger.js ← Debug logging
utils.js ← Shared utilities
state.js ← Centralized mutable state with setter functions
settings.js ← Settings CRUD, snapshot management, language resolver
schema.js ← Dynamic schema/prompt builders with language injection
color.js ← Character color assignment with fuzzy matching
normalize.js ← Data normalization with WeakMap caching
i18n.js ← Internationalization loader (29 languages in locales/*.json)
update-check.js ← Update check + one-click updater via ST's extension API
story-ideas.js ← Story idea injection
slash-commands.js ← Slash command registration (/sp)
macros.js ← Custom macro registration ({{sp_*}})
themes.js ← Theme presets (5 themes)
stagnation.js ← Scene stagnation detection
generation/
extraction.js ← Inline tracker extraction with JSON repair
streaming.js ← Streaming hider (MutationObserver + 20ms polling)
engine.js ← Generation engine with retry/fallback
delta-merge.js ← Delta response merging
interceptor.js ← SillyTavern generate interceptor
pipeline.js ← Shared extraction→normalize→save→update pipeline
function-tool.js ← Function tool calling (Separate mode)
validation.js ← Post-extraction schema validation
ui/
mobile.js ← Device detection, FAB, responsive layout
panel.js ← Side panel creation, toolbar, tablet/auto-condense
update-panel.js ← Dashboard rendering with leak-safe canvas animation
section.js ← Collapsible section builder
weather.js ← Weather particle system (9 types)
time-tint.js ← Time-of-day ambient overlays
scene-transition.js ← Location change animations
timeline.js ← Timeline scrubber + snapshot browser
thoughts.js ← Draggable thought panel with dynamic autofit
message.js ← Per-message integration + recovery card
loading.js ← Loading overlays and timers
edit-mode.js ← Inline field editing
diff-viewer.js ← Payload inspector with line-level diff
sparklines.js ← Relationship history sparklines + SVG graphs
analytics.js ← Token usage analytics panel
character-wiki.js ← Historical character browser overlay
relationship-web.js ← SVG circular relationship graph
settings-ui/
create-settings.js ← Settings panel HTML template (tabbed)
bind-ui.js ← Settings form bindings with live language switch
custom-panels.js ← Custom panel manager
setup-guide.js ← First-run wizard
guided-tour.js ← Interactive feature tour
vendor/
jsonrepair.mjs ← Vendored jsonrepair v3.12.0 (ISC) — tokenizer-based JSON repair
jsonrepair.LICENSE ← Full ISC license text
README.md ← Provenance, upgrade procedure, validation pointer
css/
29 modular stylesheets ← Split by component, loaded via @import
tests/
vendor/ ← Manual dev scripts for the vendored library
jsonrepair.test.mjs ← 106-case smoke suite
compare.test.mjs ← Old regex repair vs jsonrepair head-to-head
*.test.mjs ← 1,411-case regression suite (delta, profiles, slash,
macros, normalize, group chat, character aliases,
wiki persistence, crash log, temporal validation, etc.)
No bundler required — SillyTavern loads extensions as <script type="module">, so native ES imports work out of the box.
- SillyTavern 1.12.0+ (tested up to 1.17.x)
- Tested models: GLM-4/5/5.1, Claude, GPT-4o, Gemini, Llama 3, Mistral, Qwen
- API providers: OpenAI-compatible, Anthropic, Google AI, any provider SillyTavern supports
- Browsers: Chrome, Firefox, Safari (mobile & desktop)
- Languages: 29 languages with full UI + LLM output localization
Note: Together mode works best with instruction-following models that reliably append structured data. Smaller or older models may need Separate mode or a fallback profile.
Access settings via Extensions → ScenePulse in SillyTavern's settings panel. Settings are organized into 4 tabs:
| Setting | Description |
|---|---|
| Enable ScenePulse | Master toggle |
| Delta mode | Enabled by default — LLM returns only changed fields, saving 66-77% output tokens. Auto-refreshes every 15 turns. Use /sp-refresh if data seems stale |
| Function tool calling | Use structured tool calling in Separate mode (experimental) |
| Auto-generate | Update tracker on every AI message |
| Reduce visual effects | Disables the animated dashboard canvas, particles, and decorative blend modes. Recommended on laptops or integrated GPUs |
| Language | UI + LLM output language (29 options, auto-detect) |
| Theme | Visual theme preset (5 options) |
| Font scale | Adjust text size (0.7x–1.5x) |
| Setting | Description |
|---|---|
| Injection method | Together (inline) or Separate (dedicated API call) |
| Context messages | How many recent messages to include (Separate mode) |
| Fallback profile | Connection profile for auto-recovery |
| Model discovery (OpenRouter) | Optional, off by default. When enabled, the preset browser pulls live OpenRouter pricing, context windows, and roleplay popularity for each model so you can compare alternatives at a glance. Read-only — never touches your prompts, samplers, or generations. One fetch per session, cached 24 h, ~30 KB |
| Lorebook filter | How lorebooks are included in generation context |
| Setting | Description |
|---|---|
| Profile | Active profile selector + new / duplicate / rename / export / import / delete / manage. Each profile bundles its own prompt + schema + panels |
| Configure Prompts | Unified modal with two tabs: Slots (per-slot editor — role, critical rules, language, name awareness, quest validation, delta mode) and Templates (browse all 39 bundled model presets with sort + search + family filter, sampler hints, OR pricing/context/popularity chips when discovery is enabled). Stock-prompts presets are flagged with an amber footnote so you know applying them is informational pending community overrides |
| JSON schema | Output structure definition (writes to the active profile, lockable) |
| Setting | Description |
|---|---|
| Max snapshots | Maximum scene snapshots stored per chat (0 = unlimited) |
| Generate / Clear / Reset | Manual generation, data clearing, settings reset |
| Export / Import Config | Save/load ScenePulse configuration as JSON (includes profiles + per-chat panels) |
| Debug Inspector | Tabbed overlay: Activity (live debug log), Last Response (raw LLM JSON), Crashes (persistent error log with "Report on GitHub") |
| Development (collapsed + locked by default) | Manual triggers for one-time popups: Setup Guide, OR Connector Prompt, Preset Suggestion, Update Banner. Plus a Reset all one-time popup state button that clears every "already shown" flag so popups behave as if you were a fresh install on next reload. Section auto-relocks every settings open |
Create custom tracking panels with any fields you need:
- Open Panel Manager (grid icon in toolbar)
- Scroll to Custom Panels → + Add Panel
- Add fields with:
- Key — JSON field name (e.g.,
player_health) - Label — display name (e.g., "Health Points")
- Type — text, number, meter (0–100), list, or enum
- LLM Hint — instruction for the AI (e.g., "Current HP out of 100")
- Key — JSON field name (e.g.,
Custom fields are automatically included in the tracker prompt and extracted from AI responses.
- Model compliance — Some models intermittently skip the tracker block or output mangled markers; the fallback system handles this with a separate API call, and extraction supports multiple marker variants
- Delta mode — Enabled by default since v6.9.0. If you see incomplete or stale data after many turns, use
/sp-refreshto force a full-state regeneration. The system auto-refreshes every 15 delta turns - Payload visibility — The regex filter and streaming hider work together to hide tracker JSON during streaming. In rare cases with very fast token rates, a brief flash may occur before the hider locks
- Function tool calling — Experimental, Separate mode only. GLM-5.1 tool calling is inconsistent; some generations may miss the tool call and fall back to text prompt
- Mobile — Weather effects, time-of-day tint, inner thoughts panel, and condense view are disabled on mobile to optimize performance
- GPU on integrated graphics — If the panel feels heavy on a laptop or low-power GPU, toggle Reduce visual effects in Settings → General. The animated dashboard canvas alone can be expensive on weaker hardware
- Translations — While all 29 languages have full translation coverage, some translations may be imperfect. Community corrections welcome — edit the JSON files in
locales/
See CHANGELOG.md for the full version history.
Latest: v6.27.6 — Preset browser polish + OpenRouter model-discovery overlay. Three new sort modes (Token usage / Cost / OR ranking) grouped in the dropdown alongside the existing Match-first / Name / Family / Context. Soft-green ✓ stock-prompts badge identifies templates that don't override the default prompts, paired with an amber footnote explaining the apply is informational pending community overrides. The OpenRouter connector (opt-in, off by default) fetches live pricing, context windows, and roleplay popularity once per session for the preset browser — read-only, never touches generation. Two new branded dialog modules (or-connector-prompt.js, preset-suggestion-prompt.js) replace the plain confirm boxes for the model-match and connector opt-in moments. Advanced tab Development section (collapsed + locked by default) lets you re-trigger every one-time popup for QA. Earlier in 6.27.x: temporal validator (6.24.0) auto-corrects backward time jumps from the LLM while respecting intentional flashbacks. 1,485 tests passing.
Found a bug? Have a feature idea? Contributions welcome!
- Open an issue to report bugs or suggest features
- Fork the repo, create a branch, and submit a PR
- Translations — Add or improve translations in
src/i18n.js. Each language is a simple key-value object. - Join the discussion in the issues tab
ScenePulse started as a desire for something more — a scene-aware companion that could grow alongside the stories being told. These projects paved the way and remain worth checking out:
- RPG Companion by SpicyMarinara — The original RPG tracking extension for SillyTavern
- Dooms Enhancement Suite by DangerDaza — A comprehensive SillyTavern enhancement suite for RPG tracking and scene management
- WTracker by bmen25124 — Lightweight world state tracking
- zTracker by Zaakh — Scene and character tracking with a clean UI
Their ideas and approaches directly shaped what ScenePulse is becoming. If you're exploring scene tracking or extensions for SillyTavern, give them a look.
GPL-3.0 License — see LICENSE for details.
Built by xenofei
Every scene has a pulse. Now you can feel it.
