En développement · mis à jour le 8 nov. 2026

ASafariM OS

Une plateforme de base : un système d’exploitation auquel les applications se branchent. Chaque application profite des avantages de l’OS sans les construire elle-même.

ASafariM OS est un nouveau système avec ses propres applications. Ce n’est pas une migration de la plateforme asafarim.com, qui continue de fonctionner telle quelle.

Vous avez accès ? Se connecter, puis ouvrez Docs ou Flow, si votre compte y a accès. Pas encore d’accès ? Connectez-vous avec votre adresse e-mail et choisissez Request connection : un administrateur l’approuve.

Applications

Ce qui tourne sur ASafariM OS, et les produits construits à côté : où trouver chacun, et où il en est.

Intégrées à l’OS

Produits créés par ASafariM

Avec leur propre code et leurs propres domaines, dans le style de l’OS ; leurs pages de projet sont servies par l’OS.

Livré

Ce qui est construit et fusionné jusqu’ici, phase par phase. Cette liste est un journal des modifications du code, en anglais.

  1. P0

    Foundations

    The workspace, CI and the self-describing app contract: an app's manifest, its validator and JSON Schema, and the platform CLI that compiles manifests and checks that the core never imports an app.

    Pull requests fusionnées : #1, #12, #13

  2. OS-D1

    Local dev environment

    One command starts the whole OS locally: Postgres, Redis, identity, core-api, a dev login stub with seeded users, and a dev gateway in front of every app.

    Pull requests fusionnées : #29, #38

  3. P2

    Identity

    The OpenID Connect provider for id.asafarim.site, with sign-in delegated to Hub, plus its published container image and production deploy files.

    Pull requests fusionnées : #23, #41, #46, #47

  4. P3

    Control plane

    core-api's registry, permission catalog and lifecycle; the app SDK and Notes, the first built-in app; the Admin console for apps, roles, grants and the audit log.

    Pull requests fusionnées : #33, #39

  5. P4.1

    Event bus and bus auth

    NATS JetStream with CloudEvents, an outbox and relay, durable consumers with dedupe and dead letters, and per-app bus permissions checked by core-api when an app connects.

    Pull requests fusionnées : #50, #52, #54, #56

  6. P4.2

    Event catalog

    Apps upload signed schemas for the events they publish, and the Admin console lists every event type with its publisher, subscribers and schema.

    Pull requests fusionnées : #65, #67

  7. Remove

    Remove an app

    The last lifecycle step: an admin removes an app, its grants and bus resources are cleaned up, and it can be installed again from scratch.

    Pull requests fusionnées : #69

  8. P6.1

    Health and status board

    core-api checks every active app's live and ready endpoints from its manifest, and the Admin console shows them on one Status page.

    Pull requests fusionnées : #84

  9. Landing

    This page is live

    asafarim.site now serves the OS landing page from its own container, deployed on its own with one command and no identity. The placeholder page is gone.

    Pull requests fusionnées : #74, #98

  10. P6.2

    Traces, request metrics and trace-id logs

    Every app's requests become OpenTelemetry traces and per-route rate, error and duration metrics, with only route patterns leaving the app, and its JSON log lines carry the trace id. One command starts a local collector.

    Pull requests fusionnées : #96

  11. External apps

    Install an app from its image

    An app built in another repository is installed from its container image: its manifest travels as an image label and is validated, and one command runs it locally or writes its production compose file.

    Pull requests fusionnées : #90, #105, #107

  12. Docs

    A private documentation reader

    docs.asafarim.site, the second built-in app: it renders documents from their source repository with contents and search, keeps study notes on a part of a document, and is open only to the people the OS grants it to.

    Pull requests fusionnées : #85, #86, #88, #91, #92, #111

  13. P6 part 2

    Traces across apps

    One request stays one trace through the gateway, core-api and the event bus, and every app flushes its traces and metrics when it stops.

    Pull requests fusionnées : #112, #113, #114, #117, #125

  14. Retention

    Backup and purge

    Removing an app first backs up its database. The database is dropped only after a retention window, and only if the backup is still there and unchanged. The CLI can remove, purge and list them.

    Pull requests fusionnées : #115, #116

  15. P7.2

    Manifest review

    Every pull request gets an advisory check that compares an app's manifest with its code: unguarded routes, permissions never checked, and events without a schema or a handler, posted as one comment.

    Pull requests fusionnées : #118, #121, #124

  16. Sign-in

    Email codes and passkeys

    id.asafarim.site signs people in with a one-time email code or a passkey, built in the OS with no outside provider, and an admin approves new connections.

    Pull requests fusionnées : #122, #127, #129

  17. P7.4

    Event search

    The Admin console's event catalog answers questions like "which app emits something when an order ships?" by searching event types, apps and schema descriptions.

    Pull requests fusionnées : #128, #134

  18. Database spans

    Database time in every trace

    Queries from core-api, Notes and Docs show up in their request's trace with the operation and the database name only, never the SQL text or its values.

    Pull requests fusionnées : #142, #143, #149

  19. Top bar

    App switcher and account menu

    Every OS app has the same top bar: a switcher to each app you can open, and an account menu with your name and Sign out.

    Pull requests fusionnées : #152, #153, #155, #156, #157

  20. Core in production

    core-api and its own database

    core-api runs in production next to the OS's own Postgres on a private network, started by the deploy only once its encrypted settings are committed. A failed image pull is retried before the deploy gives up.

    Pull requests fusionnées : #140, #141, #164

  21. Alerts

    Down and recovered alerts

    core-api can send one message to a chat webhook when an app goes down and one when it recovers. It keeps the history on the Status page, and remembers what it already reported across a restart.

    Pull requests fusionnées : #150, #154, #158, #159, #160, #161, #163

  22. P7.1

    Scaffold a new app

    One command writes a new app with its manifest, sign-in, the OS top bar, a permission-checked example route, health endpoints, telemetry and a test. It passes manifest review with no findings.

    Pull requests fusionnées : #103, #120, #165

  23. Admin live

    Admin console in production

    The Admin console runs at admin.asafarim.site: admins manage apps, roles, grants and the audit log there.

    Pull requests fusionnées : #176

  24. CLI

    The OS from the command line

    The platform CLI reads what the Admin console shows: the audit log, every app and its state, one app's permissions and roles, who holds which role, and the event catalog with its keyword search.

    Pull requests fusionnées : #172, #177, #178, #179, #180, #181, #182

  25. Retention part 2

    Backups checked on demand

    A removed app's backup can be verified at any time, from the command line or from the Admin console's Apps page, before its database is purged.

    Pull requests fusionnées : #168, #183

  26. Look

    One look for every app

    One light and dark theme with a toggle in every header, data tables that fit a phone, a shared layout for the sign-in pages, and a link to the Admin console for admins.

    Pull requests fusionnées : #202, #204, #205, #206, #207, #234

  27. Sister sites

    Breinhap and IGS-Pharma

    The OS stack also serves the landing pages of two ventures built in their own repositories, breinhap.asafarim.site and igs.asafarim.site, linked from every OS navigation.

    Pull requests fusionnées : #209, #210, #212, #219, #224, #228, #229

  28. Legal

    Privacy, cookies and terms

    Privacy, cookie and terms pages linked from every OS footer, and a sitemap, share preview and structured data for this page.

    Pull requests fusionnées : #215, #233

  29. Sign-in part 2

    Continue with Google and access requests

    id.asafarim.site adds Continue with Google next to email codes and passkeys, with redesigned sign-in pages. A new person asks for access to the apps they need, with a note, and an admin approves.

    Pull requests fusionnées : #201, #235, #245

  30. Audit centre

    An audit centre

    The Admin console shows sign-ins, access decisions and admin changes in one audit centre.

    Pull requests fusionnées : #248

  31. Flow

    Flow, the workflow app

    flow.asafarim.site, the third built-in app: workflows that run on events, with approval steps a person approves or rejects. Its first workflow has the Docs app draft a GitHub issue and creates it once someone approves.

    Pull requests fusionnées : #249, #250, #251, #254, #255, #257, #258

  32. Bus in production

    The event bus in production

    NATS joins the production stack, and core-api, Docs and Flow connect to it when it runs.

    Pull requests fusionnées : #260, #261

  33. Sessions

    One sign-out everywhere

    An app's session ends when the identity session does, and signing out of an app also ends the id.asafarim.site session. A test fails if the two lifetimes drift apart.

    Pull requests fusionnées : #186, #187, #252, #256

  34. P7.2 part 2

    A deeper manifest review

    Manifest review catches many more mismatches between an app's manifest and its code: secrets, config and permissions declared but never used or used but never declared; routes, health paths and launcher tiles nothing serves; events and schemas that don't line up; database gaps; and names or ports that clash. The CLI's README lists every finding, and a test keeps the list complete.

    Pull requests fusionnées : #184, #188, #189, #190, #191, #192, #193, #196, #197, #198, #199, #200, #203, #208, #211, #213, #220, #221, #222, #223, #226, #227, #230, #231, #232, #236, #237, #238, #239, #241, #242, #244, #246, #247, #263, #264, #265

  35. Flow slice 2

    The workflow builder and connectors

    Flow gets a visual builder, a new workflow format and the engine that runs it, webhook and GitHub event triggers, six outbound connectors, and an encrypted credential store behind an allow-list of the hosts it may reach.

    Pull requests fusionnées : #267, #268, #269, #270, #271, #272

  36. Switcher

    A new app switcher

    An icon-only app switcher in every app, one menu open at a time, and a launcher panel that a host page's styles can't break.

    Pull requests fusionnées : #288, #289, #290, #291, #292, #303

  37. Flow files and AI

    Workflow files and drafts from issues

    Workflows can be exported, printed and imported as files. Flow can also draft a workflow from a GitHub or GitLab issue with Claude: the draft never runs by itself, and every step that sends data out arrives unconfigured.

    Pull requests fusionnées : #284, #285, #286, #294, #298, #299

  38. Flow hardening

    Flow, hardened

    Pause all stops work already in flight and fails closed. The public webhook endpoint answers unknown and forged calls the same way and limits floods per source, and credentials stay bound to their settings.

    Pull requests fusionnées : #308, #309, #310

Captures d’écran

Prises par Playwright dans l’environnement de test de bout en bout, pas dessinées à la main.

Feuille de route

  1. P4

    Événements, terminés

    Une démo en direct en lecture seule de core-api, Admin et Notes, et le TLS et le mode opérateur pour le bus d’événements, maintenant qu’il tourne en production.

  2. P6

    Observabilité

    Métriques, traces et journaux au même endroit avec des tableaux de bord, des alertes sur les traces et les métriques, et un tableau de statut public.

  3. P7

    Aide de l’IA

    De l’aide de l’IA là où la comparaison de texte ne voit pas : rédiger le manifeste d’une nouvelle application, une revue de manifeste plus poussée, une recherche sémantique dans les événements et un copilote en lecture seule dans la console d’administration.

  4. Flow slice 3

    Workflows planifiés

    Des workflows qui démarrent selon un calendrier, et de nouveaux workflows qui s’exécutent d’abord à blanc.