Terminal-native semantic status framework for system state summarization
Project description
glyphcore
glyphcore is a semantic state summarization framework for terminal-native applications.
It answers one question: "Is this system in a state that requires attention?"
glyphcore renders semantic signals as glyph-based views for fast scanning, while allowing optional escalation to high-fidelity GUI inspection when deeper analysis is needed.
This is not a charting library. This is not a finance tool. This is a domain-agnostic decision framework.
Why glyphcore exists
Most visualization tools assume pixels, mice, and dashboards.
But many serious workflows live in terminals:
- system operators
- DevOps engineers
- infrastructure monitors
- remote SSH environments
- keyboard-first users
Existing options force a bad trade-off:
- TUIs are fast but visually limited
- GUIs are rich but slow and workflow-breaking
glyphcore removes that trade-off.
It treats the terminal as a semantic grid, rendering meaning first, not geometry — and only uses GUI visuals when the user explicitly asks for them.
Domain-Agnostic Design
glyphcore is not a finance framework. It is a semantic state summarization framework.
Finance is just one domain where:
- signals exist
- trends matter
- humans must decide fast
The framework does not know or care what the numbers represent. It models:
- Direction → Is the system moving?
- Momentum → Is change accelerating or slowing?
- Regime → What kind of environment is this?
- Confidence → How sure are we?
- Span → Over what window?
This applies to:
- Finance: values, volume
- Infrastructure: CPU usage, latency
- AI/ML: loss curves, accuracy
- Security: threat scores
- Health: vitals trends
- Product: DAU, churn
- DevOps: error rates
- Games: player activity
Same semantics. Different nouns.
Core ideas
1. Semantic first, visuals second
Data is interpreted into signals (direction, momentum, regime) before anything is rendered.
If the meaning is unclear, nothing is drawn.
2. Terminal as a semantic grid
The terminal is treated as a 2D canvas of glyphs, not a stream of text.
Rendering is done in memory using a virtual framebuffer, then flushed atomically.
3. Layered fidelity
- TUI (always-on): fast, glyph-based, SSH-safe
- GUI (summonable): pixel-based inspection for detail
Both views are driven by the same semantic core.
What glyphcore is (and is not)
It is
- a framework / engine
- terminal-first
- keyboard-native
- field-agnostic
- dependency-light
It is not
- a plotting library
- a finance-only tool
- an ASCII art generator
- a dashboard framework
Typical use cases
- Infrastructure health dashboards
- System monitoring and alerting
- AI/ML training run status
- Security threat surface visualization
- Product metrics tracking
- Developer tooling with optional visual inspection
- Remote or cloud-native observability
- Any application where "Is this system in a state that requires attention?" matters more than raw detail
Minimal example
from glyphcore import Engine
# Create engine
engine = Engine(width=80, height=24)
# Analyze raw data to get semantic Signal
# (values could be CPU usage, latency, numeric metrics, loss curves, etc.)
signal = engine.analyze(
values=[42.0, 43.0, 48.0, 45.5, 46.0],
labels=['00:00', '01:00', '02:00', '03:00', '04:00']
)
# Render TUI (always-on, zero-lag)
tui_view = engine.render_tui(signal)
print(tui_view)
# Signal properties
print(f"Direction: {signal.direction}") # UP | DOWN | FLAT
print(f"Strength: {signal.strength:.2f}") # 0.0 - 1.0
print(f"Momentum: {signal.momentum}") # ACCELERATING | DECELERATING | STABLE
print(f"Regime: {signal.regime}") # TREND | RANGE | VOLATILE
print(f"Confidence: {signal.confidence:.2f}") # 0.0 - 1.0
# When deeper inspection is needed (optional)
engine.render_gui(signal) # Opens interactive GUI window
API Overview
Signal (The Semantic Contract)
Signal is the shared truth between TUI and GUI renderers. If something is not in Signal, renderers are not allowed to invent it.
@dataclass(frozen=True)
class Signal:
direction: str # "UP" | "DOWN" | "FLAT"
strength: float # normalized magnitude (0.0 - 1.0)
momentum: str # "ACCELERATING" | "DECELERATING" | "STABLE"
regime: str # "TREND" | "RANGE" | "VOLATILE"
confidence: float # 0.0 – 1.0
values: list[float] # raw series
labels: list[str] # optional x-axis labels
Engine (The Orchestrator)
The Engine normalizes data, computes semantics, and chooses fidelity. It never draws directly.
engine = Engine(width=80, height=24, locale='en_US.UTF-8')
# Analyze: convert raw data to semantic Signal
signal = engine.analyze(values=[...], labels=[...])
# Render TUI: glyph-based terminal view (returns string)
output = engine.render_tui(signal)
# Render GUI: high-fidelity inspection (optional, opens window)
engine.render_gui(signal)
Architecture
glyphcore/
├── __init__.py # exports Engine, Signal
├── core/
│ └── signal.py # Signal dataclass (semantic contract)
├── engine/
│ ├── analyzer.py # Semantic analysis (direction, momentum, regime)
│ ├── normalize.py # Coordinate transformation
│ └── engine.py # Main orchestrator
└── renderers/
├── tui.py # TUI glyph renderer
└── gui.py # GUI pixel renderer (optional)
Design Principles
- Domain-agnostic: glyphcore never names the domain; the host application provides meaning
- Signal is the contract: TUI and GUI both consume the same Signal
- Engine never draws: All rendering delegated to renderers
- Internal details hidden: Glyph selection, framebuffer, interpolation are implementation details
- Zero-dependency core: TUI uses only Python stdlib
- Optional GUI: Requires plotly or matplotlib for GUI escalation
- Compliance guaranteed: StatusBlock renderers are validated against framework invariants
- Compliance guaranteed: StatusBlock renderers are validated against framework invariants
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file glyphcore-0.3.0.tar.gz.
File metadata
- Download URL: glyphcore-0.3.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8bc29b0f96877b76ab4424a8b16dd3a6075447ce56ef75c18fde56747be34cd
|
|
| MD5 |
ac769ed798fd7f00c410c4d5eb00d9c1
|
|
| BLAKE2b-256 |
2897da7689a731f67eab392399dc5c1aa71207dece1e744caf92dfa43689823f
|
File details
Details for the file glyphcore-0.3.0-py3-none-any.whl.
File metadata
- Download URL: glyphcore-0.3.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed836cc2782146d541f9d997c06f69fdd6ef42d20bda754aaf4e74f45eb995dd
|
|
| MD5 |
a0938a19ebf61ecec7d3f2924d17e24e
|
|
| BLAKE2b-256 |
d10b677181609ab0c6a52f5d34996a4e741dc1624844d196277f1d6df55b745e
|