neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Open-source observability dashboard for Claude API usage. Track tokens, cost & latency in real-time. Drop-in SDK wrapper with zero overhead.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Multi-tenant SaaS observability platform for Claude API (and OpenAI) usage. Track tokens, cost & latency in real-time with a drop-in SDK wrapper that adds zero overhead to your requests.
Try it instantly; with email registration. Or not, uo to you.README 전문 보기 ↗Multi-tenant SaaS observability platform for Claude API (and OpenAI) usage. Track tokens, cost & latency in real-time with a drop-in SDK wrapper that adds zero overhead to your requests.
Try it instantly; with email registration. Or not, uo to you.
🔗 https://llm-web-production.up.railway.app
Email: [email protected]
Password: Demo1234!
new Anthropic() with new MonitoredAnthropic(). Zero code changes elsewhere.obs_sk_ tokens authenticate SDK metric ingestion and link calls to your org.POST to your own endpoints on every metric event.error_type and error_message for failed API calls.Cost per request is calculated from token usage using this table (USD per million tokens, keep in sync with packages/sdk/src/index.js and packages/sdk-python/llm_observatory/_pricing.py):
| Model | Input ($/MTok) | Output ($/MTok) |
|---|---|---|
claude-opus-4-6 | 15.00 | 75.00 |
claude-sonnet-4-6 | 3.00 | 15.00 |
claude-haiku-4-5 / claude-haiku-4-5-20251001 | 0.80 | 4.00 |
claude-3-5-sonnet-20241022 | 3.00 | 15.00 |
claude-3-5-haiku-20241022 | 0.80 | 4.00 |
claude-3-opus-20240229 | 15.00 | 75.00 |
claude-3-haiku-20240307 | 0.25 | 1.25 |
An unrecognized model logs a warning and records cost as $0 — add new models to the pricing tables in both SDKs (ANTHROPIC_PRICING / OPENAI_PRICING / GEMINI_PRICING in packages/sdk/src/index.js) as providers release them.
| Feature | LLM Observatory | Helicone | Langfuse |
|---|---|---|---|
| Open source (MIT) | ✅ | ✅ | ✅ |
| Self-hosted | ✅ | ✅ | ✅ |
| Zero-latency (async SDK, no proxy) | ✅ | ⚠️ proxy | ✅ |
| Anthropic + OpenAI support | ✅ | ✅ | ✅ |
| Node.js SDK | ✅ | ✅ | ✅ |
| Python SDK | ✅ | ✅ | ✅ |
| Real-time WebSocket dashboard | ✅ | ❌ | ❌ |
| Cost & token tracking | ✅ | ✅ | ✅ |
| Budget alerts | ✅ | ✅ (cloud) | ⚠️ limited |
| Discord notifications (native) | ✅ | ❌ | ❌ |
| Outbound webhooks (HMAC-signed) | ✅ | ✅ | ✅ |
| Provider balance tracking | ✅ | ❌ | ❌ |
| Historical sync from provider API | ✅ | ❌ | ❌ |
| Prompt cache hit tracking | ✅ | ✅ | ❌ |
| Multi-tenant with team roles | ✅ | ✅ | ✅ |
| CSV export | ✅ | ✅ | ✅ |
When to choose LLM Observatory: you want a self-hosted, zero-overhead cost dashboard with real-time updates, basic evals, and no per-request cloud fees. When to choose Langfuse: you need deep evaluation pipelines and full tracing spans. When to choose Helicone: you want a managed cloud with minimal setup.
git clone https://github.com/DavidAucancela/llm-observatory
cd llm-observatory
npm install
cp .env.example .env
Edit .env with the required values:
DATABASE_URL=postgresql://postgres:changeme@localhost:5432/llm_observatory
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY=<32-byte hex>
# Generate with: node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
JWT_SECRET=<64-byte hex>
# Email (Resend) — required for account activation and invitations
RESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxx
[email protected] # safe default; change once you verify a custom domain in Resend
APP_URL=http://localhost:5173
docker-compose up -d --build
Open http://localhost — you'll be redirected to the register page to create your first account and organization.
Requirements: Node.js 20+, PostgreSQL 16
npm run dev
In the dashboard → Settings → Team tab → Observatory Tokens → New token.
Copy the full obs_sk_... value — it's shown only once.
Anthropic:
const { MonitoredAnthropic } = require('@llm-observatory/sdk');
const client = new MonitoredAnthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
observatoryUrl: 'http://localhost:3001',
observatoryToken: process.env.OBSERVATORY_TOKEN // obs_sk_...
});
// Use exactly like the official Anthropic SDK
const response = await client.messages.create({
model: 'claude-opus-4-8', // or your preferred model
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello!' }]
});
OpenAI:
const { MonitoredOpenAI } = require('@llm-observatory/sdk');
const client = new MonitoredOpenAI({
apiKey: process.env.OPENAI_API_KEY,
observatoryUrl: 'http://localhost:3001',
observatoryToken: process.env.OBSERVATORY_TOKEN
});
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }]
});
Metrics are sent asynchronously — your API call returns immediately with zero latency overhead.
Each organization is fully isolated:
org_id.obs_sk_xxx) are how the SDK identifies which org a metric belongs to. Store them in your app's environment variables.Registration flow:
/register (email + optional org name + password)./accept-invite?token=xxx → sets password → joins org.Settings manages two types of keys:
Keys your projects use with MonitoredAnthropic / MonitoredOpenAI to register metrics.
sk-ant-api03-sk-proj-Keys with elevated permissions needed for the history sync feature. Not the same as SDK keys.
sk-ant-admin-/v1/organization/usageAll keys are stored encrypted with AES-256-GCM (authenticated encryption). They are never shown in full in the UI.
User Application
└─► MonitoredAnthropic / MonitoredOpenAI (SDK)
│ Authorization: Bearer obs_sk_xxx ← org identity
├─► Claude / OpenAI API (real request, awaited)
└─► Observatory API (async metric POST, fire & forget)
├─► org_id resolution (token hash → org)
├─► PostgreSQL (persists all metrics, scoped by org_id)
├─► Socket.io (broadcasts to connected dashboards)
└─► React Dashboard (WebSocket real-time updates)
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 5, Tailwind CSS 3, Socket.io Client |
| Backend | Node.js 20, Express 4, Socket.io 4, Zod, node-cron, bcrypt, jsonwebtoken |
| Database | PostgreSQL 16 — shared schema multi-tenancy with org_id scoping |
| Real-time | Socket.io WebSocket (auto-reconnect) |
| Auth | JWT (1h expiry, server-side revocation) + bcrypt (cost 12) + Observatory tokens (SHA-256 hashed) |
| Resend (account activation, password reset, team invitations) | |
| Encryption | AES-256-GCM (authenticated) for stored provider API keys |
| Deployment | Docker Compose, Railway |
| Endpoint | Window | Limit |
|---|---|---|
| All API routes | 60 s | 300 req |
POST /api/metrics (SDK ingest) | 60 s | 1 000 req |
Configure via express-rate-limit in packages/api/src/index.js.
DATA_RETENTION_DAYS=<n> in your .env (minimum 1)JWT_EXPIRES_IN=8h (any ms string)POST /api/auth/logout revokes the token server-side immediately (JTI blacklist, cleaned every 15 min)Railway free tier does not include automatic backups. Run scripts/backup.sh via cron or GitHub Actions (see .github/workflows/backup.yml) to push daily pg_dump archives to S3/R2.
MIT
| Usage-based cloud pricing | ❌ (self-host = free) | ✅ | ✅ |
| LLM evals (manual + LLM-as-judge scoring) | ✅ | ⚠️ limited | ✅ |
| Tracing spans | ❌ | ⚠️ limited | ✅ |