No persistent endpoint
You find a GPU, quantize an 8B-parameter model and keep it running yourself.
NAIC 2026 · Developer Infrastructure
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.
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" }
The gap
N-ATLaS is open and downloadable. Between the Hugging Face page and a working app sits infrastructure work every developer ends up repeating.
You find a GPU, quantize an 8B-parameter model and keep it running yourself.
One LLM and four ASR checkpoints, each with its own interface, for you to stitch together.
Nothing to copy for the obvious first builds: a citizen chatbot, a classroom tool, a customer-service line.
What OpenAtlas is
Not a new model, and not another app on top of N-ATLaS. Three parts that make building on it fast.
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
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.
One consistent interface, whichever N-ATLaS model actually answers.
Citizen services, education and customer service. Each is a minimal page or script that sends a real request through the SDK to the hosted endpoint and back.
What each proves
npm install && npm start, pointed at the live endpoint with a single environment variable.
Demo datasets and shortcuts are marked as demo inside the interface itself.
The OpenAtlas gateway issues your key, counts active users against the licence cap and forwards each call to a GPU host serving the N-ATLaS LLM and all four ASR models. You never provision hardware or manage weights just to try the model.
What's served
Nigerian and West African developers, academic and research teams, and anyone building civic, education or support tools in local languages.
New infrastructure built for this submission. Not load-tested, with no uptime or SLA claim. The GPU host can change behind the gateway without any change to your code, and first-call latency while models load is documented up front.
The API
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.
Messages in, N-ATLaS LLM completion out. Optional language hint.
POST /v1/chat/completions
Audio plus a language code, routed to the matching N-ATLaS ASR model.
POST /v1/audio/transcriptions
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
Flag a wrong N-ATLaS output with its correction. Every app becomes an opt-in source of corrected local-language data.
POST /v1/issues
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
How it flows
Every starter kit displays each intermediate step, such as the transcript before the reply, so you can see N-ATLaS doing the work.
Built on N-ATLaS
NAIC requires genuine N-ATLaS integration. OpenAtlas has no general-purpose model anywhere in the reasoning or transcription path.
Starter kits
Reference implementations, not finished products. No persistence layer, no auth, no dataset beyond a labeled demo fixture.
Local-language Q&A over a small civic-info dataset, such as how to renew an ID.
normalizeText() → chat()
Tutoring-style explanations in Hausa, Yoruba or Igbo, reframed by level.
chat() · reportIssue()
A voice note is transcribed, then a reply is drafted for the support team.
transcribe() → normalizeText() → chat()
Known limitations
Stated plainly, not buried in a footnote.
The first call after the backend starts takes longer while the models load. Expect it, and retry if a request times out.
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.
This is new infrastructure and it has not been load-tested. No uptime or reliability claim is made.
speak() depends on NAIC confirming the pairing is allowed. If not, it is dropped without weakening the core SDK.
API keys are requested through a short form and issued by hand. There is no usage analytics or billing UI.
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.
That is the bar the quickstart is held to: copy, paste, run.