Krako no Gemini: por que escolhemos este protocolo e como estamos publicando uma “capsule” minimalista

A ideia deste artigo é explicar **o que é Gemini**, **por que faz sentido** para projetos pessoais/editoriais e **como estruturamos o Krako** para publicar conteúdo com baixo atrito operacional.

Krako no Gemini: por que escolhemos este protocolo e como estamos publicando uma “capsule” minimalista
gemini://gemini.pablo.space/

O que é o protocolo Gemini (e por que ele existe)

O Gemini é um protocolo de aplicação, cliente-servidor, com transações simples (requisição/resposta) que lembram Gopher e HTTP, mas com algumas escolhas claras:

  • Uma transação por conexão (abre, negocia TLS, faz uma requisição, recebe resposta e fecha). :contentReference[oaicite:0]{index=0}
  • TLS obrigatório e foco no princípio TOFU (Trust On First Use), que aceita bem certificados autoassinados e privilegia autonomia. :contentReference[oaicite:1]{index=1}
  • Quando servido sobre TCP/IP, porta padrão 1965. :contentReference[oaicite:2]{index=2}
  • Um formato de documento próprio, o Gemtext (tipicamente text/gemini), que é propositalmente limitado: cabeçalhos, listas, citações, blocos pré-formatados e links. :contentReference[oaicite:3]{index=3}

Na prática, Gemini tende a reduzir custos de complexidade: sem JavaScript, sem rastreadores, sem “framework fatigue” no lado do conteúdo. Há inclusive leituras no ecossistema que conectam Gemini a ideias de computação sustentável e minimalista. :contentReference[oaicite:4]{index=4}


Krako: o que estamos construindo no Gemini

O Krako é uma capsule Gemini com estrutura editorial simples:

  • uma página inicial (index.gmi) como “diretório”
  • páginas fixas (por exemplo /pages/…)
  • coleções (por exemplo cartas e textos agrupados)

O objetivo é manter um espaço legível, rápido e fácil de manter, onde o conteúdo é o produto: texto, links e organização.

Você pode acessar aqui:

  • gemini://gemini.pablo.space/

Por que Gemini (em vez de “web tradicional”)

Alguns motivos práticos que pesaram a favor:

  1. Entrega de conteúdo com atrito mínimo
    Um servidor Gemini pode ser estático, sem template engine, sem banco de dados e sem pipeline de front-end.

  2. Segurança simples por padrão
    O protocolo já presume TLS, e muitos clientes trabalham em TOFU — o que simplifica o “primeiro deploy” e reduz dependências.

  3. Escopo intencionalmente limitado
    O formato Gemtext tem poucas primitivas — o que torna o design e a edição mais consistentes, e reduz o risco de “acidentalmente virar uma app”.

  4. Operação enxuta
    VPS pequena, processo único, baixo consumo. Servidores como o Agate foram feitos exatamente para servir conteúdo estático com poucos recursos. :contentReference[oaicite:5]{index=5}


Como estamos servindo o Krako: Agate e conteúdo estático

No servidor, usamos o Agate, um servidor Gemini minimalista e eficiente, focado em servir arquivos estáticos. :contentReference[oaicite:6]{index=6}

Pontos importantes do Agate que ajudam muito em projetos como o Krako:

  • Serve estático a partir de um diretório de conteúdo (ex.: /var/lib/krako/content). :contentReference[oaicite:7]{index=7}
  • Ao requisitar um diretório, procura index.gmi. :contentReference[oaicite:8]{index=8}
  • Com --hostname, pode gerar certificados autoassinados automaticamente (e o projeto recomenda isso por TOFU, alinhado à especificação). :contentReference[oaicite:9]{index=9}
  • Suporta TLS 1.2 e 1.3 por padrão (e desabilitar TLS 1.2 não é recomendado por compatibilidade). :contentReference[oaicite:10]{index=10}

Como atualizar o “site”: duas estratégias

Aqui existem dois caminhos, dependendo do que você quer dizer com “atualizar em MD sem renderizar”.

1) Publicar Markdown “cru” (sem converter)

Você pode colocar arquivos .md no diretório servido e linkar para eles a partir de um .gmi.

  • Pró: você edita Markdown e publica direto, sem build.
  • Contra: Gemini não “renderiza Markdown” como um navegador renderiza HTML — muitos clientes exibem como texto simples.

Exemplo de link Gemtext apontando para .md:

=> /md/notes.md Notes (Markdown cru)