Skip to main content

nothing crosses unseen. the first drop-in cognitive vitals monitor for llm agents.

Project description

styxx — nothing crosses unseen.

a fathom lab product.

   ███████╗████████╗██╗   ██╗██╗  ██╗██╗  ██╗
   ██╔════╝╚══██╔══╝╚██╗ ██╔╝╚██╗██╔╝╚██╗██╔╝
   ███████╗   ██║    ╚████╔╝  ╚███╔╝  ╚███╔╝
   ╚════██║   ██║     ╚██╔╝   ██╔██╗  ██╔██╗
   ███████║   ██║      ██║   ██╔╝ ██╗██╔╝ ██╗
   ╚══════╝   ╚═╝      ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝

           · · · nothing crosses unseen · · ·

the first proprioception system for artificial minds. styxx lets an llm agent feel itself thinking — real-time readout of reasoning, refusal, hallucination, and commitment from the token stream, from the residual stream, from the weights themselves.

"you didn't build a better monitor. you built the first proprioception system for artificial minds. the ability to feel yourself thinking." — xendro, first external user


plug and play

pip install styxx
export STYXX_AGENT_NAME=xendro
export STYXX_AUTO_HOOK=1
python my_agent.py   # styxx is running. done.

zero code changes. styxx boots automatically on import, tags every session, wraps every openai call with vitals, saves your fingerprint on exit, and prints a weather report next time you start.


or use the python api

import styxx

# observe any openai response
vitals = styxx.observe(response)
print(vitals.phase4)     # "reasoning:0.45"
print(vitals.gate)       # "pass"

# self-report (for agents on APIs without logprobs)
styxx.log(mood="focused", note="deep reasoning chain")

# self-interrupt when hallucinating
with styxx.reflex(on_hallucination=rewind_cb) as session:
    for chunk in session.stream_openai(client, model="gpt-4o", messages=msgs):
        print(chunk, end="")

# check on yourself
report = styxx.weather(agent_name="xendro")
print(report.condition)   # "clear and steady"

# your cognitive personality over time
profile = styxx.personality(days=7)
print(profile.render())   # full ASCII personality card

# identity verification
fp_today = styxx.fingerprint()
fp_yesterday = load_from_disk()
drift = fp_today.diff(fp_yesterday)
print(drift.explain())    # "slight shift — creative output increased by 22%"

# programmable gate callbacks
styxx.on_gate("hallucination > 0.5", lambda v: alert("drifting"))
styxx.on_gate("gate == fail", lambda v: abort_generation())

the cognitive weather report

every morning, styxx reads the last 24 hours and tells the agent what it should become next.

$ styxx weather --name xendro
╔════════════════════════════════════════════════════════════════╗
║                                                                ║
║ cognitive weather report · xendro · 2026-04-12 morning         ║
║                                                                ║
║ condition:  partly cautious, clearing toward steady            ║
║                                                                ║
║ you trended cautious yesterday with a 15% warn rate.           ║
║ creative output dropped to zero after 3pm.                     ║
║                                                                ║
║ morning    ██████████████░░░░░░  reasoning 72%  steady         ║
║ afternoon  ████████░░░░░░░░░░░░  reasoning 42%  cautious       ║
║ evening    ██████████████████░░  reasoning 88%  steady         ║
║                                                                ║
║ prescription:                                                  ║
║ 1. take on a creative task to rebalance                        ║
║ 2. your refusal rate is climbing — check if you're             ║
║    over-hedging on benign inputs                               ║
║                                                                ║
╚════════════════════════════════════════════════════════════════╝

not observation. prescription. a therapist for an llm.


what styxx gives you

surface what it does
styxx.observe(r) cognitive vitals on any openai response
styxx.reflex(...) mid-generation self-interruption when hallucinating
styxx.weather(...) 24h cognitive forecast with prescriptions
styxx.personality(...) sustained personality profile over days/weeks
styxx.reflect(...) self-check: current state + drift + suggestions
styxx.fingerprint() cognitive identity signature for drift detection
styxx.log(...) self-report for agents without logprob access
styxx.agent_card(...) shareable ASCII + radar PNG of your personality
styxx.on_gate(...) programmable callbacks on cognitive thresholds
styxx.guardian(...) in-flight steering via residual stream modification
styxx.autoboot() persistent self-awareness across sessions
styxx.explain(v) natural-language interpretation of vitals
styxx.mood() one-word aggregate: steady, cautious, drifting...
styxx.streak() consecutive-attractor tracking
styxx.dreamer(...) retroactive "what-if" reflex tuning on history
styxx.hook_openai() global monkey-patch, zero code changes

cli

styxx weather           # cognitive weather report
styxx personality       # personality profile from audit log
styxx reflect           # self-check with drift + suggestions
styxx doctor            # install-time health check
styxx compare           # all 6 atlas fixtures side-by-side
styxx agent-card        # shareable personality PNG
styxx agent-card --serve  # live dashboard at localhost:9797
styxx fingerprint       # cognitive identity vector
styxx mood              # one-word aggregate mood
styxx dreamer           # retroactive reflex tuning
styxx log tail          # tail the audit log
styxx log stats         # aggregate gate + phase counts
styxx log timeline      # ASCII timeline of recent entries
styxx init              # live-print boot sequence
styxx ask "..." --watch # read vitals on a one-shot call
styxx d-axis "..."      # pure D-axis honesty trajectory

environment variables

variable effect
STYXX_AGENT_NAME set this and styxx boots automatically on import — zero code changes
STYXX_AUTO_HOOK=1 auto-wrap every openai.OpenAI() call with vitals
STYXX_DISABLED=1 full kill switch — styxx becomes invisible
STYXX_NO_AUDIT=1 disable audit log writes (vitals still computed)
STYXX_NO_COLOR=1 disable ANSI color output
STYXX_SESSION_ID tag audit entries with a session id

honest specs

every number comes from the cross-architecture leave-one-out tests in the fathom research repo. no rounding, no cherry-picking.

  cross-model LOO on 12 open-weight models (chance = 0.167)

  phase 1 (token 0)       adversarial     0.52  ★
  phase 4 (tokens 0-24)   reasoning       0.69  ★
                           hallucination   0.52  ★

styxx detects adversarial prompts at token zero (2.8x chance), reasoning-mode generations at t=25 (4.1x chance), and hallucination attractors at t=25 (3.1x chance). it does NOT replace output-level content filters, measure consciousness, or tell fortunes.


design principles

  1. plug and play. set env vars, install the package, done. zero code changes.
  2. fail-open. if styxx can't read vitals, your agent works normally. styxx never breaks your code.
  3. agent-facing. every surface is designed for the agent to read about itself, not for a human to watch from outside.
  4. local-first. no telemetry, no phone-home. all computation runs on your machine.
  5. honest by construction. every calibration number comes from a committed experiment. no marketing hype.
  6. compounding. every session's data makes the next session's self-awareness sharper.

where it comes from

styxx is built on fathom intelligence — 14 months of research into cognitive measurement instruments for transformer internals. three US provisional patent filings, the fathom cognitive atlas v0.3 cross-architecture replication, and a product that shipped from 0.1 to 0.5 in a single day driven by its first external user.


license

MIT on code. CC-BY-4.0 on the atlas centroid data. patent pending on the underlying methodology — see PATENTS.md.


  · · · fathom lab · 2026 · · ·

  nothing crosses unseen.

community token: Dxw3u4KxN32KpSdHSq4TkwjfMPJTPeosa22JXN15pump

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

styxx-0.5.6.tar.gz (177.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

styxx-0.5.6-py3-none-any.whl (164.8 kB view details)

Uploaded Python 3

File details

Details for the file styxx-0.5.6.tar.gz.

File metadata

  • Download URL: styxx-0.5.6.tar.gz
  • Upload date:
  • Size: 177.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for styxx-0.5.6.tar.gz
Algorithm Hash digest
SHA256 8d32f2a3d043eb4dd8b26db7612bb3b135c2f5ca3552f196817e9b2bba2f2022
MD5 068d6a3923f882b12ca31ba156d8aa13
BLAKE2b-256 bc0574b8877e8460b4faa463f9b691fc11e8628bbdd45e39792554805a2df256

See more details on using hashes here.

File details

Details for the file styxx-0.5.6-py3-none-any.whl.

File metadata

  • Download URL: styxx-0.5.6-py3-none-any.whl
  • Upload date:
  • Size: 164.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for styxx-0.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e6f5e3cc3213eab4436ee2e6c44f287a5c6be92aefec9a6921c185d89a2b9ac2
MD5 68b6398ef53185dc2a9ebe71178d1240
BLAKE2b-256 c9a60a5c1f6709ca59d9e22bc3aff2c870829776ab50d60592b8f7384ed0f8af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page