MIB context without the maze

Find the object. Understand the index. Use it with confidence.

Search by OID, symbol, module, or monitoring task. Go from a numeric leaf to table meaning, a usable command, and traceable source context.

Search for an object to see its operational context.

Rights-cleared source catalog

Use the MIB. See why it can—or cannot—be served.

Raw download appears only when file-level evidence permits redistribution. Unknown vendor material stays out of the public corpus; an official-source link is not treated as a license.

Loading active data release
Redistributable Raw file, parsed objects, checksum, license, and official source. Metadata-only Parsed fields only when that separate scope is explicitly approved. Directory-only Publisher and official source link only; no extracted vendor content. Quarantine No public content while evidence is missing or denies the requested scope.

Identity without invention

Move from an OID to defensible context.

Registry ownership, agent identity, and hardware model are different claims. mibvendor keeps them separate and shows the evidence boundary.

Evidence-aware assessment

Assess a device identity from bounded signals

Send individual identifiers, not an SNMP walk. A registry assignment proves PEN ownership only. Only a reviewed normalization can support an exact model; other vendor-MIB assignments stop at product family/category or a generic vendor identifier. A project observation can corroborate a claim but cannot turn one observed device into a universal mapping.

The identity release publishes 6,391 distinct exact mapping keys. It contains 36 reviewed vendor-MIB model normalizations and 270 medium-confidence open-source project model claims; these are separate evidence layers, not 306 reviewed or universally resolved models. Project model evidence now covers 964 distinct OIDs. Thirty-three source candidates remain quarantined, and four reviewed definition-observation overlaps remain explicit conflicts.

A separate source-defined layer adds 655 platform prefixes covering 406 platform labels and 266 PENs. Longest arc-bound prefix matching applies only to sysObjectID and an exact OID mapping always takes precedence. A prefix can support an agent-platform result; it never asserts a hardware model or product family. Another 358 prefix candidates remain quarantined.

Numeric OID only. Example: 1.3.6.1.4.1.9.1.2435
Optional corroborating signals

No SNMP walk upload. The assessment sends only the fields above. sysDescr is processed for this request and is not stored or echoed in the result. Remove hostnames, serial numbers, addresses, and customer identifiers before submitting.

Try:

No assessment yet.

Results distinguish exact model, product family, generic vendor identifier, platform, vendor-only, conflicting evidence, and unknown outcomes. A platform-prefix match is not a hardware-model claim.

Look up the current IANA PEN assignee. Contact names and email addresses are not stored.

Try PEN 9 or 8072.

Exact rights-approved mappings take precedence. Otherwise, a longest arc-bound project prefix may identify only an agent platform. A PEN-only result never becomes a model guess.

Try the RackTables-derived SG 300-10 exact definition.

Direct, transitive, missing, and cyclic states remain separate so parser failures are diagnosable.

Inspect the public alpha dependency closure.

Secure by boundary

Use mibvendor without handing over your network.

OID context does not require device access. Keep operational secrets out of every field and use only official mibvendor service origins.

Web application

Search definitions and decode numeric walks without entering community strings, SNMPv3 credentials, device passwords, or customer identifiers.

Walk decoder

Raw walk values are parsed locally in this tab. The current decoder makes no network request and retains nothing after the tab closes.

Public API

Permanently free

Use only https://mibvendor.io/v1. Access is permanently free and fair-use bounded. Send numeric OID batches—not raw walks, credentials, hostnames, serial numbers, or customer identifiers.

Local-first workflow

Decode an existing SNMP walk

Raw text is parsed in this browser tab. This prototype makes no network request and retains nothing after the tab closes.

Prototype limit: 10 MiB or 50,000 lines.

Decoded groups and unresolved OIDs will appear here.

No decoded rows yet
Group / index Resolved object Numeric OID Value

Developer API

Resolve OIDs without uploading raw walks.

Free · Public alpha

The API is permanently free: no paid tier, subscription, billing, or paid quota upgrade. It currently needs no API key. Optional keys, if introduced, will be free abuse-control credentials only.

Core endpoints

  • GET/v1/search?q=interface+statusRanked discovery
  • GET/v1/objects/{objectId}Object semantics and provenance
  • GET/v1/objects/{objectId}/navigationBounded ancestors, children, and subtree
  • GET/v1/modules?q=BFDRights-cleared module catalog
  • GET/v1/modules/{module}/rawExact MIB + license + provenance TAR
  • GET/v1/sourcesPublication mode and rights scopes
  • GET/v1/enterprises/{number}IANA PEN lookup
  • GET/v1/sys-object-ids/{oid}Exact, platform-prefix, or PEN result
  • POST/v1/device-identities:assessBounded multi-signal identity assessment
  • GET/v1/modules/{module}/dependenciesDependency graph states
  • POST/v1/resolve:batchOrder-preserving OID resolution
  • GET/v1/data-releaseActive immutable release

Free public API contract

  • HTTPS JSON under a versioned /v1 namespace.
  • Free access is fair-use bounded, not unlimited use or an availability SLA.
  • Every response identifies its immutable data_release.
  • Identity responses expose the immutable identity_release, its SHA-256, and the active identity_view.
  • The identity view includes a separately hashed control revision and source kill-switch state.
  • Batch order and duplicate inputs are preserved.
  • Invalid OIDs and valid-but-not-found OIDs remain distinct.
  • PEN ownership never silently becomes a device-model claim.
  • Prefix matches are arc-bound, sysObjectID-only platform evidence; exact claims take precedence.
  • Errors use RFC 9457 application/problem+json.
1,000 OIDs / batch 64 KiB request body 200 search characters 120 fair-use units / minute 16 KiB identity request 32 + 32 candidates / conflicts 4 units identity assessment

Fair-use limits may change to contain abuse. Read RateLimit-* and Retry-After, honor 429, and follow each response's Cache-Control and ETag. Batch POST results are no-store; active raw routes revalidate withdrawal controls. Module lists use cursors; the service provides no availability SLA.

curl · inspect release and cache headers
curl --fail-with-body --compressed -i \
  'https://mibvendor.io/v1/data-release'
curl · follow the returned cursor
curl --fail-with-body --compressed \
  'https://mibvendor.io/v1/modules?q=IANA&limit=1&cursor=0'

# Read next_cursor from that response and pass it unchanged:
curl --fail-with-body --compressed \
  'https://mibvendor.io/v1/modules?q=IANA&limit=1&cursor=1'
curl · bounded device identity assessment
curl --fail-with-body --compressed \
  -X POST 'https://mibvendor.io/v1/device-identities:assess' \
  -H 'content-type: application/json' \
  --data '{"signals":{"sys_object_id":"1.3.6.1.4.1.9.1.2494","ent_physical_model_name":"C9300-48P"}}'
JavaScript · release-pinned batch
const origin = "https://mibvendor.io";
const releaseResponse = await fetch(`${origin}/v1/data-release`);
if (!releaseResponse.ok) throw new Error(`release: ${releaseResponse.status}`);
const release = await releaseResponse.json();

const response = await fetch(`${origin}/v1/resolve:batch`, {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    data_release: release.data_release,
    oids: ["1.3.6.1.2.1.2.2.1.8.7", "1.3.6.1.4.1.999999.1.0"]
  })
});
if (!response.ok) throw await response.json();
console.log(await response.json());
Python 3 · standard library only
import json
from urllib.request import Request, urlopen

origin = "https://mibvendor.io"
with urlopen(f"{origin}/v1/data-release", timeout=10) as response:
    release = json.load(response)

body = json.dumps({
    "data_release": release["data_release"],
    "oids": ["1.3.6.1.2.1.2.2.1.8.7"]
}).encode()
request = Request(f"{origin}/v1/resolve:batch", data=body,
                  headers={"content-type": "application/json"}, method="POST")
with urlopen(request, timeout=10) as response:
    print(json.load(response))
Live success JSON · module cursor page

No request has been sent.

Run the fixed same-origin example to inspect the actual JSON response.
Error contract example
{
  "type": "https://mibvendor.io/problems/data-release-unavailable",
  "title": "Data release unavailable",
  "status": 409,
  "detail": "This public alpha exposes only its active immutable release"
}

Data trust

Every answer should say where it came from.

mibvendor keeps source, revision, source and artifact checksums, parse status, license, and publication mode in the result model. Unknown-rights vendor material is directory-only and its content stays quarantined; being downloadable elsewhere changes nothing.