npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tekimax-omat

v0.4.1

Published

Open Multimodal Assessment Toolkit — a type-safe AI SDK for building human-centered, multimodal AI applications.

Downloads

206

Readme


🌍 OMAT — Open Multimodal Assessment Toolkit

tekimax-omat is the Open Multimodal Assessment Toolkit (OMAT) — an open-source framework enabling K-12 edtech developers to build, evaluate, and improve AI-powered formative assessments using multimodal student inputs: text, speech, drawing, and structured responses.

OMAT provides three interrelated public goods:

| Component | Description | License | |-----------|-------------|---------| | Assessment Pipeline SDK | Configurable rubric schemas, feedback generation pipelines, and model-agnostic evaluation interfaces validated against learning science constructs. | Apache 2.0 | | Formative Assessment Benchmark Suite | Standardized evaluation measuring AI performance across accuracy, fairness, learning progression alignment, and actionability. | Apache 2.0 | | Multimodal Student Response Dataset | De-identified student work across written, spoken, and drawn modalities — annotated by expert educators and aligned to Common Core and NGSS standards. | CC-BY-4.0 |

Coming to tekimax-omat

  • AssessmentPipeline module — Configurable claim–evidence–task schemas in TypeScript/Zod for structured formative assessment
  • Multimodal student input — Process text, speech, handwriting, and drawings as assessment evidence
  • useAssessment() React hook — Real-time streaming formative feedback in your UI
  • FairnessAuditPlugin — Automated demographic performance reporting across student subgroups
  • RubricValidatorPlugin — Validate AI feedback against rubric schemas and learning progressions
  • LearningProgressionPlugin — Map student responses to developmental learning sequences
  • Formative benchmarks — Run standardized evaluations for accuracy, fairness, actionability, and alignment
  • Provider-agnostic evaluation — Benchmark any AI system, regardless of provider
  • Multimodal dataset access — Load annotated student response data directly from the SDK

Equity-Centered by Design — OMAT centers multilingual learners, students with disabilities, and underserved communities at every level. Speech and drawing inputs ensure students who can't yet write can still demonstrate what they know.

OMAT follows the vision set forward by Digital Promise and the K-12 AI Infrastructure Program — that AI in education deserves shared, open infrastructure built for the students who need it most.


🚀 The Universal Standard

The Tekimax SDK solves the fragmentation of AI APIs. Instead of rewriting your integration code for every provider (handling different request formats, streaming implementations, and error types), you use one standard interface.

  • Write Once, Run Anywhere: Switch between OpenAI (Cloud) and Ollama (Local) with a single line of config.
  • Type-Safe: Full TypeScript support with Zod validation for inputs and outputs.
  • Multi-Modal: Text, images, audio, video, and embeddings through a unified namespace API.
  • OpenResponses Catalog: Fuses models.dev metadata into standard ModelDefinition objects for reasoning, modalities, and token limits.
  • Middleware Plugins: Built-in architecture for Security (PIIFilterPlugin), Scalability (MaxContextOverflowPlugin), and Telemetry (LoggerPlugin).
  • React Ready: Includes a useChat hook for instant UI integration, complete with SSE streaming.
  • Redis Adapter (optional): Response caching, rate limiting, token budgets, and session storage with any Redis client.

💻 Installation

npm install tekimax-omat

Migrating from tekimax-ts? The package has been renamed. Simply run npm install tekimax-omat — the API is identical.

💻 Usage

1. Initialize the Client

The Tekimax client is the unified entry point. It wraps any provider (OpenAI, Anthropic, Ollama, etc.) and exposes a consistent multi-modal interface.

import { 
  Tekimax, 
  OpenAIProvider, 
  AnthropicProvider, 
  OllamaProvider,
  GeminiProvider 
} from 'tekimax-omat'

// OpenAI
const client = new Tekimax({
    provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY })
})

// Anthropic
const claude = new Tekimax({
    provider: new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY })
})

// Ollama (Local)
const local = new Tekimax({
    provider: new OllamaProvider({ baseUrl: 'http://localhost:11434' })
})

2. Multi-Modal Interfaces

The client is organized into cohesive namespaces:

Text (Chat)

const response = await client.text.chat.completions.create({
    model: 'gpt-4o',
    messages: [{ role: 'user', content: 'Hello!' }]
})
console.log(response.message.content)

Images (Generation & Vision)

// Generate
const image = await client.images.generate({
    model: 'dall-e-3',
    prompt: 'A cyberpunk city',
    size: '1024x1024'
})

// Analyze (Vision)
const analysis = await client.images.analyze({
    model: 'gpt-4o',
    image: 'https://example.com/image.png',
    prompt: 'Describe this scene'
})

Audio (TTS)

const audio = await client.audio.speak({
    model: 'tts-1',
    input: 'Hello world',
    voice: 'alloy'
})

Video (Analysis)

const analysis = await client.videos.analyze({
    model: 'gemini-1.5-flash',
    video: 'https://example.com/video.mp4',
    prompt: 'Summarize this clip'
})

Embeddings

const vectors = await client.text.embed({
    model: 'text-embedding-3-small',
    input: ['Hello world', 'Tekimax SDK is awesome']
})
console.log(vectors.embeddings)

3. Cross-Provider Model Catalog

The SDK strictly implements the OpenResponses schema, optionally fusing metadata from models.dev so your application always knows what capabilities the active provider supports.

// Returns standard ModelDefinition[] populated with reasoning levels, modal limits, and costs
const models = await client.provider.getModels?.() 

if (models) {
    console.log(models.find(m => m.id === 'gpt-4o')?.modalities.input) // ['text', 'image', 'audio', 'video']
}

⚡ Optional Redis Adapter

No extra dependency — bring your own ioredis, @upstash/redis, or node-redis:

import { ResponseCache, RateLimiter, TokenBudget, SessionStore } from 'tekimax-omat'
import Redis from 'ioredis'

const redis = new Redis(process.env.REDIS_URL)

// Cache AI responses (avoid repeat API costs)
const cache = new ResponseCache(redis, { ttl: 3600 })

// Enforce rate limits per provider
const limiter = new RateLimiter(redis, { maxRequests: 60, windowSeconds: 60 })

// Track daily token spend
const budget = new TokenBudget(redis, { maxTokens: 100_000, periodSeconds: 86400 })

// Conversation state for serverless
const sessions = new SessionStore(redis, { ttl: 1800 })

🗺️ Roadmap

| Feature | Description | Status | |---------|-------------|--------| | Middleware Plugins | Pre-built and custom lifecycle hooks for Security, Telemetry, and Scalability. | ✅ Shipped | | OpenResponses Catalog | Provider abstraction parsing models.dev metadata for token limits, reasoning capabilities, and allowed modalities. | ✅ Shipped | | Real-time SSE Streaming | Native SDK token streaming, StreamChunk event typing, and full React hooks support (useChat). | ✅ Shipped | | Redis Adapter | Optional response caching, rate limiting, token budget tracking, and session storage with any Redis client. | ✅ Shipped | | Observability | Telemetry and tracing via plugins architecture. | ✅ Shipped | | ProvisionPlugin | Endpoint-agnostic API gateway client with deployment-scoped auth. | ✅ Shipped | | OCR Service | Multi-model document extraction (Gemini, PaddleOCR, Ollama GLM-OCR). | ✅ Shipped | | OMAT Assessment Pipeline | Rubric schemas, feedback generation, model-agnostic evaluation. | 🔨 In Development | | OMAT Benchmark Suite | Accuracy, fairness, actionability, learning progression alignment. | 🔨 In Development | | OMAT Multimodal Dataset | Annotated student responses across text, speech, and drawing. | 🔨 In Development | | useAssessment() Hook | Real-time formative feedback React hook. | 🔨 In Development | | FairnessAuditPlugin | Automated demographic performance reporting. | 🔨 In Development | | Batch API | Queue thousands of requests and retrieve results asynchronously. | 🔜 Planned | | Edge Runtime | Cloudflare Workers / Deno support. | 🔜 Planned | | Assistants / Threads | Stateful conversation management with persistence. | 🔜 Planned | | Fine-tuning API | Programmatic fine-tuning via internal and integrated APIs. | 🔜 Planned |

Want to help? Pick a feature and open a PR, or join the discussion in GitHub Issues.

📜 License

💖 Support

tekimax-omat is open source. If you find it valuable, please consider becoming a sponsor to support long-term maintenance.