NAIC 2026 · Developer Infrastructure

N-ATLaS, one import away.

OpenAtlas is a single TypeScript SDK for N-ATLaS. Call Nigeria's sovereign LLM and its four local-language speech models without a GPU, a quantization step or five separate interfaces.

$ npm install @openatlas/sdk
quickstart.ts
import { OpenAtlas } from "openatlas";

const client = new OpenAtlas({ apiKey: process.env.OPENATLAS_API_KEY });

const response = await client.chat({
  messages: [{ role: "user", content: "Ṣe o le ṣàlàyé ìdí tí ọ̀run fi jẹ́ búlúù?" }],
  user: "your-end-user-id", // required: one ID per end user
});

console.log(response.content);
// → { content: string, model: "NCAIR1/N-ATLaS", attribution: "Powered by Awarri" }
One client. Four language codes. ha Hausa yo Yoruba ig Igbo en-ng Nigerian-accented English

The gap

A model is not an ecosystem.

N-ATLaS is open and downloadable. Between the Hugging Face page and a working app sits infrastructure work every developer ends up repeating.

01

No persistent endpoint

You find a GPU, quantize an 8B-parameter model and keep it running yourself.

02

No single client library

One LLM and four ASR checkpoints, each with its own interface, for you to stitch together.

03

No starter templates

Nothing to copy for the obvious first builds: a citizen chatbot, a classroom tool, a customer-service line.

What OpenAtlas is

The missing layer between the model and your app.

Not a new model, and not another app on top of N-ATLaS. Three parts that make building on it fast.

One client for five models.

A single npm package routes chat() to the LLM and transcribe() to the right ASR model by language code, with typed errors, retries and timeouts. It also repairs broken Nigerian-language text with normalizeText() and sends corrections back with reportIssue().

Method surface

  • chat({ messages, user, language? })
  • transcribe({ audio, language, user })
  • normalizeText(text, { language? })
  • reportIssue({ kind, output, correction })
  • speak({ text, language }) — stretch

Why TypeScript first

It matches the stack of the starter kits and the gateway, and ships the inference settings already tested against the real N-ATLaS weights. A Python port is a roadmap item, not part of this submission.

Design principle

One consistent interface, whichever N-ATLaS model actually answers.

The API

Five methods. That's the whole surface.

Request and response shapes echo familiar chat-completion conventions to lower the learning curve. Every model call except the optional speech one is served by an N-ATLaS model.

client.chat()

Text reasoning

Messages in, N-ATLaS LLM completion out. Optional language hint.

POST /v1/chat/completions

client.transcribe()

Speech to text

Audio plus a language code, routed to the matching N-ATLaS ASR model.

POST /v1/audio/transcriptions

normalizeText()

Text repair

Fixes Nigerian-language characters broken by typing or scraping, such as Æ™asa to ƙasa. Runs locally. It does not add tone marks that were never typed.

Local · no request

client.reportIssue()

Corrections

Flag a wrong N-ATLaS output with its correction. Every app becomes an opt-in source of corrected local-language data.

POST /v1/issues

client.speak()
Optional

Audio rendering

Final-stage rendering of text N-ATLaS already produced, by a separate speech model. Clear in English; Hausa, Yoruba and Igbo are experimental.

POST /v1/audio/speech

Full API reference →

How it flows

Show the pipeline. Don't hide it.

Every starter kit displays each intermediate step, such as the transcript before the reply, so you can see N-ATLaS doing the work.

Customer Service

InputVoice note
transcribe()N-ATLaS ASR, by language
normalizeText()Repair broken characters
chat()N-ATLaS LLM drafts reply
speak() · stretchAudio reply

Citizen Services

InputQuestion in text
normalizeText()Repair broken characters
chat()N-ATLaS LLM + civic context
OutputResponse shown

Education

InputQuestion in a local language
chat()N-ATLaS LLM + instructional framing
OutputExplanation shown

Built on N-ATLaS

What's in the critical path

NAIC requires genuine N-ATLaS integration. OpenAtlas has no general-purpose model anywhere in the reasoning or transcription path.

In the path

  • The N-ATLaS LLM handles every reasoning call
  • N-ATLaS ASR handles every transcription
  • Text-to-speech, if shipped, only renders audio from text N-ATLaS already wrote
  • Demos run against the live endpoint, never mocks

Out of scope

  • A general-purpose model standing in for N-ATLaS
  • Fine-tuning or retraining any N-ATLaS model
  • Commercial positioning, given the model's non-commercial licence
  • Uptime, SLA or multi-tenant scale claims

Starter kits

Pick a niche. Swap in your content.

Reference implementations, not finished products. No persistence layer, no auth, no dataset beyond a labeled demo fixture.

01

Citizen Services

Local-language Q&A over a small civic-info dataset, such as how to renew an ID.

normalizeText() → chat()

02

Education

Tutoring-style explanations in Hausa, Yoruba or Igbo, reframed by level.

chat() · reportIssue()

03

Customer Service

A voice note is transcribed, then a reply is drafted for the support team.

transcribe() → normalizeText() → chat()

See all three interfaces →

Known limitations

Read this before you build.

Stated plainly, not buried in a footnote.

First-call latency

The first call after the backend starts takes longer while the models load. Expect it, and retry if a request times out.

Non-commercial licence

N-ATLaS caps usage at 1,000 active users per 30 days and is non-commercial. The hosted endpoint is a developer and research resource, not a production SaaS.

No SLA

This is new infrastructure and it has not been load-tested. No uptime or reliability claim is made.

Speech output is a stretch

speak() depends on NAIC confirming the pairing is allowed. If not, it is dropped without weakening the core SDK.

No dashboard yet

API keys are requested through a short form and issued by hand. There is no usage analytics or billing UI.

Text repair, not restoration

normalizeText() fixes characters that were corrupted. It does not add tone marks that were never typed; N-ATLaS-based tone restoration is a roadmap item.

A real N-ATLaS response in five minutes.

That is the bar the quickstart is held to: copy, paste, run.

Get an API key Read the docs