arifos-langfuselisted
Install: claude install-skill ariffazil/arifos
# arifOS-Langfuse Skill
Instrument arifOS constitutional AI operations with Langfuse LLM tracing.
## Architecture
```
arifOS Kernel (Python)
└── arifosmcp/runtime/telemetry.py ← Telemetry wrapper
├── Prometheus metrics (counters, histograms)
└── Langfuse v3 span tracing ← HERE
├── context manager: with lf.start_as_current_observation() as span
├── span.update(input={...}, output={...})
└── lf.flush()
```
arifOS uses Langfuse Python SDK v3 with **context manager pattern** — spans auto-close on exit.
## Credentials
arifOS → Langfuse (cloud Japan):
```bash
export LANGFUSE_PUBLIC_KEY=pk-lf-bbe515cf-c1f7-46f3-badc-14cc172554ef
export LANGFUSE_SECRET_KEY=sk-lf-ed6da0eb-23c7-4ccb-a4f9-6d3bac1179d9
export LANGFUSE_HOST=https://jp.cloud.langfuse.com
```
arifOS → Langfuse (self-hosted on VPS):
```bash
export LANGFUSE_HOST=http://langfuse-web:3000
# same keys
```
## Key Patterns
### Correct span creation (v3 context manager)
```python
from langfuse import Langfuse
lf = Langfuse(
public_key=os.getenv("LANGFUSE_PUBLIC_KEY"),
secret_key=os.getenv("LANGFUSE_SECRET_KEY"),
host=os.getenv("LANGFUSE_HOST", "https://jp.cloud.langfuse.com")
)
# WRONG — detached span, no active context
lf.start_as_current_observation(as_type="span", name="arifOS::tool-name")
lf.update_current_span(...)
# CORRECT — context manager, span auto-closes
with lf.start_as_current_observation(as_type="span", name="arifOS::tool-name", m