NoWayOS
PT
GitHub
MenuFechar

Menos, de propósito

Single Purpose OS

Um computador sem mais nada para fazer.

Sem navegador. Sem área de trabalho. Sem shell. Sem logins. Só uma tarefa, construída apenas com o código de que precisa, isolada em compartimentos sobre o microkernel seL4 e escrita em Rust.

Já roda no QEMU e no Raspberry Pi 5 · Código aberto, no GitHub

01 / O princípio da tarefa única

Uma tarefa.Todo o resto, de fora.
Uma ilustração do princípio.

Como chegamos aqui

Começou pelos lugares que não podem ter um dia ruim.

Nunca foi nosso plano escrever um sistema operacional. Nosso plano era proteger alguns dispositivos muito importantes, e debaixo de todos eles encontrávamos sempre o mesmo problema.

A missão
Proteger os sistemas que fazem um país funcionar: os controles que mantêm a energia fluindo e a água limpa, as redes das quais um hospital depende, os gateways que levam os dados deles para fora, os terminais da sala de controle e cada dispositivo ao redor, até a tela que um desconhecido encontra num lugar público. Cada um deles tinha uma só tarefa. Cada um rodava um sistema operacional feito para fazer milhares.
O porém
Um sistema de propósito geral já chega com tudo de que um dia poderia precisar: navegador, área de trabalho, shell, logins, serviços em segundo plano. Trave-o num único app e tudo isso continua lá embaixo, esperando que alguém encontre o caminho de volta. Cada linha a mais é algo para corrigir, e algo para atacar.
A virada
Então fizemos a pergunta oposta: e se o dispositivo contivesse apenas a sua única tarefa? Partimos do seL4, escrevemos em Rust tudo o que é nosso acima dele, isolamos cada parte num compartimento próprio e deixamos todo o resto de fora. Depois registramos as evidências, para que ninguém precise acreditar só na nossa palavra.
A surpresa
Aí olhamos em volta. O gateway da subestação, o terminal da sala de controle, o painel na lateral de uma bomba, a caixa entre duas redes, a tela na parede da estação: quase todo dispositivo dedicado tem uma só tarefa. O que começou como armadura para infraestrutura crítica acabou se revelando uma forma melhor de construir todos eles. Chamamos isso de Single Purpose OS.

Menos para atacar. Muito menos para corrigir. Nada mais para fazer.

O que queremos dizer

O propósito vem de fábrica. Todo o resto fica de fora.

Um Single Purpose OS é feito para a única tarefa de um dispositivo, em vez de ser feito para rodar qualquer coisa e depois travado numa só. Três características o definem.

  1. Feito para uma só tarefa

    A imagem do dispositivo contém a aplicação, os drivers que essa aplicação usa e o kernel. Nada de que outra tarefa poderia precisar está ali: nada de navegador, área de trabalho, shell, gerenciador de pacotes ou conta de usuário.

  2. Isolado por dentro

    Cada parte (a tela, a entrada, a rede, a aplicação) roda num compartimento próprio e só alcança o que lhe foi concedido. Tudo é projetado para que uma falha numa parte fique ali.

  3. Abre o jogo

    Ele vem com as evidências do que há dentro e do que cada parte pode fazer: cada concessão registrada, cada componente listado e verificações que qualquer pessoa pode executar.

Não é modo quiosque, que trava um sistema de propósito geral num único app e deixa todo o resto no lugar. Não é um SO monousuário, que limita quem usa um computador, e não o que há nele.

O que não está lá

Menos software. De propósito.

A maioria dos dispositivos dedicados roda um sistema de propósito geral com uma aplicação por cima, e todo o resto continua por baixo. O NoWayOS parte da tarefa, acrescenta só o que ela exige e deixa o resto de fora. Veja a diferença.

Não há como explorar o que nunca foi embutido.
Um dispositivo travado típicoUm dispositivo NoWayOS
Navegador web e motor JavaScriptIncluídoNão embutido
Área de trabalho e sistema de janelasIncluídoNão embutido
Shell e linha de comandoIncluídoNão embutido
Gerenciador de pacotesIncluídoNão embutido
Contas de usuário e loginsIncluídoNão embutido
Serviços em segundo planoIncluídoNão embutido
Configurações para travar tudo issoIncluídoNão embutido
KernelDe propósito geral: dezenas de milhões de linhasseL4: cerca de 10.000 linhas
DriversPara o hardware que puder encontrarSó para o hardware que usa
Sua aplicaçãoIncluídoIncluído
Não há como explorar o que nunca foi embutido.

Screen Compiler

Você ama React. Nós também.

Quer interfaces ricas e modernas, feitas no fluxo de trabalho que você já conhece? Escreva suas telas em React. O Screen Compiler as transforma em componentes Rust nativos que rodam diretamente no NoWayOS: sem navegador, sem JavaScript, sem página web para atacar.

  • Fique com as suas ferramentas: componentes, props, design tokens e o editor que você já usa.
  • Blocos de construção de verdade: layouts, textos, botões, campos de texto, caixas de seleção, grupos de opções, cartões, avisos, barras de progresso e ícones.
  • Exato ou nada. Ele converte o seu subconjunto com exatidão e recusa todo o resto, indicando arquivo, linha e coluna. Nunca chuta.
  • Conferido pixel a pixel. Cada tela convertida é desenhada pelo NoWayOS e comparada com a sua imagem aprovada.

Transforme sua primeira tela em Rust

Entra React
<Column gap={SPACE_SM} padding={SPACE_LG}>
  <Text id="title">Welcome</Text>
  <Text>Touch Start to begin.</Text>
  <Button id="start" onPress={onStart}>
    Start
  </Button>
</Column>
Sai Rust
let n1 = b.text("Welcome")?; // welcome.tsx:17:9
let n2 = b.text("Touch Start to begin.")?;
let n5 = b.button("Start", actions::START)?;
let n0 = b.column(
    ui::Layout::new()
        .gap(super::tokens::SPACE_SM)
        .padding(super::tokens::SPACE_LG),
    &[n1, n2, n5],
)?;

Trecho resumido de uma das telas de teste do Screen Compiler e do Rust que ele gera.

Por que isso importa

Uma só tarefa. E isso basta.

Construa um computador para uma única coisa e você pode construí-lo de um jeito muito diferente. Veja o que isso traz para você.

  • Mais seguro

    Não há como explorar o que nunca foi embutido.

    • Sem motor de navegador, sem sistema de janelas, sem shell, sem gerenciador de pacotes, sem contas de usuário. O que não está na imagem não pode ser usado contra ela.
    • A tela, a entrada, a rede e a sua aplicação vivem cada uma num compartimento isolado próprio, alcançando só o que lhes foi concedido. O sistema é construído para que uma falha numa parte fique nessa parte.
    • No centro está o seL4, que a seL4 Foundation chama de “o kernel de sistema operacional com o mais alto grau de garantia e o mais rápido do mundo”.
    • Rust de ponta a ponta. Código unsafe só existe num punhado de crates revisados, e o build impõe essa lista.
  • Mais eficiente

    Nada ocioso. Nada no caminho.

    • Sem serviços em segundo plano e sem atualizador para software que você nunca usa. Ligou, ele vai direto para a sua única tarefa.
    • Cada byte é decidido em tempo de build: cada parte recebe uma quantidade fixa de memória e nunca pode pegar mais. A maior parte do código do dispositivo não aloca nada, e até o cliente TLS tem um orçamento fixo: se um dia ele se esgotar, o cliente para de forma limpa em vez de crescer.
    • Uma interface nativa e nítida, que redesenha só o que mudou, à vontade em hardware de baixo custo como o Raspberry Pi 5.
  • Mais fácil de desenvolver

    Uma linguagem. Um contêiner. Emulador primeiro.

    • Rust dos drivers à interface de usuário.
    • Crie as telas em React. O Screen Compiler as transforma em Rust nativo em tempo de build: uma interface moderna sem motor de navegador e sem JavaScript no dispositivo. Ou escreva-as em Rust.
    • Os toolchains, o SDK do seL4 Microkit e o QEMU vêm com versões fixadas num único contêiner de desenvolvimento. Sua máquina só precisa de Podman e make, e de Python para controlar um Raspberry Pi.
  • Mais fácil de comprovar

    Cada concessão registrada. Cada imagem discriminada.

    • Cada capacidade que um sistema concede está listada num arquivo, e o build falha se os dois discordarem.
    • Cada imagem vem com uma lista de materiais de software e um registro da sua configuração do seL4.
    • Provas limitadas de que cada decodificador de mensagens nunca entra em pânico, nunca estoura e nunca lê fora dos limites, além de fuzzing e verificações de licenças e de alertas de segurança: cada uma é um comando que você mesmo pode executar.

Quando tudo depende dele, dê a ele uma só tarefa.

Alguns dispositivos têm um trabalho importante demais para dividir com distrações: os controles de uma rede de energia, o gateway de saída de uma estação de tratamento de água, o terminal de uma sala de controle, a fronteira entre duas redes. O NoWayOS é projetado em torno da função que cada dispositivo precisa cumprir, com as evidências para ajudar você a entender o que há dentro.

Provas, não adjetivos

Ele cuida da própria vida. Você pode conferir.

Uma alegação de segurança vale o que valem as evidências por trás dela. O NoWayOS registra as evidências, e cada uma delas vem de um comando que você pode executar.

  • Cada concessão registrada

    O arquivo de concessões de cada sistema lista cada prioridade, região de memória, dispositivo, interrupção e canal que ele concede. O build falha se o sistema e a lista discordarem.

  • Isolamento testado para falhar

    Os testes de isolamento tentam alcançar o que não lhes foi dado, e o seL4 precisa barrá-los. Uma variante com uma concessão ampliada de propósito precisa falhar, o que mostra que o teste pode falhar.

  • Cada imagem discriminada

    Uma lista de materiais de software CycloneDX para cada imagem: o kernel, o carregador, cada domínio de proteção e os crates dentro dele, cada um com o seu hash.

  • Portões fora de alcance

    As verificações que toda contribuição precisa passar ficam no Defence Agent, um repositório público só delas, e um pull request que mexe num portão é sinalizado para o mantenedor.

Leia as evidências de uma imagem real

Às claras

Quatro projetos. Uma tarefa cada.

Os quatro são de código aberto e desenvolvidos às claras, sob a organização NoWayOS no GitHub. Clone, compile e confira cada linha você mesmo.

  • NoWayOS

    O Single Purpose OS.

    Padrões de domínio de proteção sobre o seL4 e o Microkit, mensagens tipadas, drivers, rede e uma interface de usuário nativa, com o contêiner de desenvolvimento e as verificações com que todo repositório do NoWayOS faz o build.

    Situação
    Em desenvolvimento
    Licença
    MIT OR Apache-2.0
    NoWayOS no GitHub
  • Screen Compiler

    Projete em React. Entregue Rust nativo. Nenhum navegador no dispositivo.

    Converte telas React, escritas em TSX dentro de um subconjunto declarado, em Rust para a interface de usuário do NoWayOS. Ele roda em tempo de build, na sua máquina ou na CI, e nunca vai para o dispositivo.

    Situação
    Em desenvolvimento: subconjunto v0 e as primeiras partes do v1
    Licença
    MIT
    Screen Compiler no GitHub
  • Showcase

    Aplicações seguras que você pode rodar num Raspberry Pi.

    Um kit para telas seguras de autoatendimento, uma aplicação de referência para usar como base e um lançador de exemplos com marcas fictícias, no qual o Raspberry Pi 5 inicializa.

    Situação
    Em fase inicial, e não implantável
    Licença
    MIT OR Apache-2.0
    Showcase no GitHub
  • Defence Agent

    Os portões por onde toda contribuição precisa passar, fora do alcance do pull request.

    Cada portão de segurança por onde uma mudança nos projetos abertos do NoWayOS precisa passar, registrado com a ameaça a que responde e quem pode alterá-lo, e o agente que os executa. Um pull request nunca altera nem fornece aquilo que o julga.

    Situação
    Público: os portões estão registrados; o agente e as suas ferramentas vêm a seguir
    Licença
    MIT OR Apache-2.0
    Defence Agent no GitHub

Mais sobre os projetos

Parceiros comerciais

Produtos comerciais, construídos sobre o NoWayOS.

A Adappt.ai, patrocinadora do NoWayOS, é a sua primeira parceira comercial. Ela está construindo dois produtos comerciais sobre o NoWayOS, e os dois estão em desenvolvimento.

Quer se tornar um parceiro comercial? Escreva para partners@nowayos.com

Remote Desktop
Uma janela reforçada. Uma estação segura para um desktop Windows remoto, projetada para isolar a conexão num compartimento próprio e manter as credenciais fora do alcance dela.
Data Diode
Não tem volta. Uma fronteira de mão única para tirar dados de uma rede protegida, projetada em torno de um enlace que leva luz num só sentido.

Em que pé está

Já roda hoje. Ainda não está acabado.

O NoWayOS está em desenvolvimento e ainda não está pronto para entrar em produção, e as suas APIs vão mudar. Veja o que roda hoje e o que vem a seguir.

No QEMU
Mais de cinquenta sistemas inicializam e verificam a própria saída, de um primeiro domínio de proteção até a pilha de rede obtendo um endereço por DHCP, o estado de falha segura do supervisor e uma interface de usuário clicável.
No Raspberry Pi 5
A interface de usuário numa tela HDMI, teclado e mouse USB, temporizadores, o watchdog e o reset do supervisor já rodam na placa. Mais partes do hardware estão sendo colocadas para funcionar.
Ainda por vir
Inicialização segura, atualizações assinadas aplicadas no dispositivo e hardware industrial (NXP i.MX8).
As provas do seL4
Todo sistema roda sobre o seL4, mas nenhuma imagem do NoWayOS usa ainda uma configuração coberta pelas provas concluídas do seL4. Cada imagem registra a configuração que usa.

Acompanhe o trabalho

Um propósito. Muito para explorar.

Comece pelo design, examine as evidências ou construa seu primeiro sistema com os guias para desenvolvedores. Aliás, este site segue a mesma regra: sem scripts, sem cookies, nada mais para fazer.