As33
@periodic/
arsenic
npm install @periodic/arsenic

Reveal what's breaking

@periodic/arsenic is production-grade semantic runtime monitoring for Node.js. It doesn't just tell you something is slow — it tells you exactly why, with callsite attribution, request correlation, and 60+ classified signals.

60+Signals
0Dependencies
4Databases
10Periodic packages

Drop in. Observe immediately.

Three lines of setup.

No agents. No YAML. No proprietary SDKs.

app.ts
import { createMonitor, expressContext, mongooseAdapter } from '@periodic/arsenic';

const monitor = createMonitor({
  slowQueryThresholdMs: 200,
  exporter: (event) => {
    if (event.severity === 'critical') sendToPagerDuty(event);
    else if (event.severity === 'warning') sendToSlack(event);
    else logger.info(event);
  },
});

app.use(expressContext(monitor));
mongooseAdapter(monitor, mongoose);
Event output
🔴 critical
{
  "type": "db.query",
  "model": "User",
  "operation": "findOne",
  "durationMs": 312,
  "slow": true,
  "signals": ["hot_path", "unbounded_query"],
  "severity": "critical",
  "request": {
    "method": "GET",
    "route": "/users/:id"
  },
  "callsite": {
    "file": "src/routes/users.ts",
    "line": 14
  }
}

Why Arsenic

Everything your backend is already emitting

Built through real-world production experience to surface the hidden signals before they become incidents.

Zero Dependencies

Pure TypeScript core. No runtime bloat, no side effects on import. Small, fast, and safe.

Request Correlation

Every query linked to its HTTP request via AsyncLocalStorage. Fully automatic, zero boilerplate.

Callsite Attribution

Exact file and line number for every slow query. Know immediately which code to fix.

60+ Semantic Signals

Critical, warning, and info. Hot path, N+1, unbounded, fan-out — explained, not just detected.

Multi-Database

Mongoose, Prisma, pg, Redis. Drop in an adapter for your stack and get instant observability.

Exporter-First

Send events anywhere. PagerDuty, Slack, Datadog, OpenTelemetry. You own the destination.

Signal Intelligence

60+ signals.
Three severity levels.

Every event is automatically classified and explained. Critical signals go to PagerDuty. Warnings go to Slack. Info signals go to your structured logs.

14 Critical32 Warning16 Info
View all 60+ signals
hot_pathcritical

Slow query on a frequently hit path — highest priority target.

n_plus_onecritical

Multiple queries where a single batch should suffice.

unbounded_querycritical

Missing LIMIT — may return entire collections.

slow_querywarning

Exceeded configured latency threshold.

fan_outwarning

Too many queries per single request.

cache_candidateinfo

Query pattern would benefit from caching.