đ Navigator
March 14, 2026 · View on GitHub
Navigator is a real-time collaborative threat modeling tool that combines human expertise with generative AI to streamline the security design process while maintaining simplicity and rigor.

IMPORTANT: This project is undergoing active development and may experience breaking changes. This project is also still missing feature and has bugs. Please review the issues for more information. If you have any specific questions, please contact max.neuvians@cds-snc.ca.
NOTE: Navigator should be deployed in an environment with the appropriate safeguards in place to protect the confidentiality, integrity, and availability of the data that will be stored there. For example, before using Navigator to conduct threat modeling and other analysis at the Protected B level, Navigator should be deployed to an environment with security controls in place commesurate with the hosting of that data. Departmental Risk Management processes should be followed, including the completion of a security assessment where required.
Features
-
Threat modeling with STRIDE based on a pre-defined threat grammar. For more information see Threat Composer.
-
Collaborative, real-time editing of threat models, data flow diagrams, and application architecture.
-
Generative AI to help assist threat modeling and explain architectures and data flow.
-
Mapping of assumptions and mitigations to NIST controls for easy compliance documentation.
-
Use of shareable reference packs to help establish common assumptions, threats, and mitigation across teams in an organization.
If you prefer images over text you can look at the gallery.
Rationale
Navigator offers an alternative to the compliance-driven security approach commonly practiced in large organizations. In teams following agile development practices, compliance-driven security often creates a bottleneck: controls must either be determined before development begins or after it concludes. This paradigm positions security as an obstacle to development rather than a collaborative partner in the process.
Navigator is built on the premise that a system's attack surface expands primarily through the addition of features and their interactions. While the most secure system might be the one that does nothing, real-world applications must balance security with functionality. As new features are implemented or system components evolve, the threat model should adapt to reflect both direct threats from new capabilities and emergent threats from feature interactions, environmental changes, and dependencies.
Threat modeling, particularly the STRIDE methodology, provides teams with an accessible framework for identifying and understanding threats throughout the development lifecycle. Through an iterative process, teams can build and maintain a comprehensive threat model that reflects their system's actual architecture, interactions, and environmental context, rather than relying solely on upfront design assumptions.
While Navigator streamlines the threat modeling process, it recognizes that compliance documentation remains a necessary business requirement. Rather than treating compliance as an afterthought or barrier, a key design goal has been to automatically generate documentation from the ongoing threat modeling process. Teams can map assumptions and mitigations to specific NIST controls, and export the resulting documentation for security assessments, making compliance a natural outcome of good security practices.
Navigator's flexibility allows it to be used for threat modeling both individual features and entire systems, without imposing a rigid workflow on teams. This adaptability enables organizations to integrate security thinking into their development process in a way that suits their specific needs and maturity level.
Quickstart using codespaces
Note: It is normal to see warnings during the setup process. Also depending on the amount of memory available to the codespace, the setup process may take longer than usual.
Running with docker compose
You can run the app locally using docker compose. It is not recommended to use this in production.
docker compose up
will build the latest image and run the app on http://localhost:4000. If you would like to use the LLM functionality, you need to provide your own OPENAI API key for gpt-4o-mini.
OPENAI_API_KEY=sk-proj... docker compose up
If you make changes to the source code, then you need to rebuild the image:
docker compose up -d --no-deps --build app
Setup for development
cd valentine
mix deps.get
mix ecto.create
mix ecto.migrate
mix run priv/repo/seeds.exs
cd assets
npm i
OpenSpec workflow
This repository uses OpenSpec for spec-driven development.
openspec/specs/contains the current-state baseline: what the system currently does.openspec/changes/contains proposed deltas: what a feature or behavior change will modify.- Main specs in
openspec/specs/do not need an extra "implemented" marker. If they exist, they describe the currently implemented behavior. - New feature work should usually start by asking the AI agent to create an OpenSpec change for you, then implementing it, and finally syncing the accepted behavior back into the baseline spec during archive.
Typical agent-driven workflow:
- Tell your AI:
/opsx:propose <what-you-want-to-build>. - Review the generated change under
openspec/changes/<change-name>/. - Tell your AI to implement the approved change.
- Tell your AI to archive the change once the code and specs are in sync.
OpenAI on Azure
You can also use OpenAI on Azure. You need to provide the following environment variables:
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_KEY=
Optional Auth
You can use several different providers as your IDP if you set the following environment variables:
AWS Cognito:
COGNITO_DOMAIN=<your-domain>.amazoncognito.com
COGNITO_CLIENT_ID=your-client-id
COGNITO_CLIENT_SECRET=your-client-secret
COGNITO_USER_POOL_ID=your-user-pool-id
COGNITO_AWS_REGION=your-aws-region
Google Auth:
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
Microsoft Entra ID:
MICROSOFT_CLIENT_ID=your-client-id
MICROSOFT_CLIENT_SECRET=your-client-secret
MICROSOFT_TENANT_ID=your-tenant-id
In this case to access the /workspaces route you need to be authenticated with the IDP, but visiting /:provider/auth.
License
MIT 2025
---------------------------------------------------------------------
Navigator đ
Navigator est un outil collaboratif de modĂ©lisation des menaces en temps rĂ©el qui associe lâexpertise humaine Ă lâIA gĂ©nĂ©rative pour rationaliser le processus de conception de la sĂ©curitĂ© tout en conservant simplicitĂ© et rigueur.

IMPORTANT : Ce projet est en cours de développement et peut subir des modifications importantes. Il manque encore des fonctionnalités à ce projet et il comporte des bogues. Veuillez examiner les problÚmes pour plus de renseignements. Si vous avez des questions spécifiques, veuillez contacter : max.neuvians@cds-snc.ca.
REMARQUE : Navigator doit ĂȘtre dĂ©ployĂ© dans un environnement dotĂ© des mesures de protection appropriĂ©es afin de garantir la confidentialitĂ©, l'intĂ©gritĂ© et la disponibilitĂ© des donnĂ©es qui y seront stockĂ©es. Par exemple, avant d'utiliser Navigator pour mener des analyses de modĂ©lisation des menaces et d'autres analyses au niveau ProtĂ©gĂ© B, Navigator doit ĂȘtre dĂ©ployĂ© dans un environnement disposant de contrĂŽles de sĂ©curitĂ© proportionnĂ©s Ă l'hĂ©bergement de ces donnĂ©es. Les processus de gestion des risques ministĂ©riels doivent ĂȘtre suivis, y compris la rĂ©alisation d'une Ă©valuation de sĂ©curitĂ© lorsque cela est requis.
Fonctionnalités
-
ModĂ©lisation des menaces Ă lâaide de STRIDE sur la base dâune grammaire des menaces prĂ©dĂ©finie. Pour de plus amples renseignements, consultez : Threat Composer.
-
Ădition collaborative et en temps rĂ©el des modĂšles de menaces, des diagrammes de flux de donnĂ©es et de lâarchitecture des applications.
-
LâIA gĂ©nĂ©rative pour aider Ă la modĂ©lisation des menaces et expliquer les architectures et les flux de donnĂ©es.
-
Mise en correspondance des hypothĂšses et des mesures dâattĂ©nuation avec les contrĂŽles NIST afin de faciliter les documents de la conformitĂ©.
-
Utilisation de dossiers de rĂ©fĂ©rence partageables pour aider Ă Ă©tablir des hypothĂšses communes, des menaces et des mesures dâattĂ©nuation au sein des Ă©quipes dâune organisation.
Si vous préférez les images au lieu des textes, vous pouvez consulter la [galerie].
Justification
Navigator offre une autre option que lâapproche de la sĂ©curitĂ© axĂ©e sur la conformitĂ©, souvent pratiquĂ©e dans les grandes organisations. Dans les Ă©quipes qui suivent des pratiques de dĂ©veloppement agiles, la sĂ©curitĂ© axĂ©e sur la conformitĂ© crĂ©e souvent un goulot dâĂ©tranglement : les contrĂŽles doivent ĂȘtre dĂ©terminĂ©s soit avant le dĂ©but du dĂ©veloppement, soit aprĂšs sa conclusion. Ce paradigme place la sĂ©curitĂ© comme un obstacle au dĂ©veloppement plutĂŽt que comme un partenaire de collaboration dans le processus.
Navigator repose sur le principe que la surface dâattaque dâun systĂšme sâĂ©tend principalement par lâajout de fonctionnalitĂ©s et leurs interactions. Si le systĂšme le plus sĂ©curisĂ© peut-ĂȘtre celui qui ne fait rien, les applications du monde rĂ©el doivent trouver un Ă©quilibre entre la sĂ©curitĂ© et la fonctionnalitĂ©. Au fur et Ă mesure que de nouvelles fonctionnalitĂ©s sont mises en Ćuvre ou que les composants du systĂšme Ă©voluent, le modĂšle de menace devrait sâadapter pour reflĂ©ter Ă la fois les menaces directes provenant des nouvelles capacitĂ©s et les menaces Ă©mergentes provenant des interactions entre les fonctionnalitĂ©s, des changements environnementaux et des dĂ©pendances.
La modĂ©lisation des menaces, en particulier la mĂ©thodologie de STRIDE, fournit aux Ă©quipes un cadre accessible pour identifier et comprendre les menaces tout au long du cycle de vie du dĂ©veloppement. GrĂące Ă un processus itĂ©ratif, les Ă©quipes peuvent construire et maintenir un modĂšle de menace complet qui reflĂšte lâarchitecture, les interactions et le contexte environnemental rĂ©els de leur systĂšme, plutĂŽt que de se fier uniquement Ă des hypothĂšses de conception initiales.
Si Navigator rationalise le processus de modĂ©lisation des menaces, cet outil reconnaĂźt que les documents de conformitĂ© restent une nĂ©cessitĂ© pour lâorganisation. PlutĂŽt que de traiter la conformitĂ© comme une rĂ©flexion aprĂšs coup ou comme un obstacle, lâun des principaux objectifs de la conception a Ă©tĂ© de gĂ©nĂ©rer automatiquement des documents Ă partir du processus de modĂ©lisation des menaces en cours. Les Ă©quipes peuvent faire correspondre les hypothĂšses et les mesures dâattĂ©nuation aux contrĂŽles prĂ©cis du NIST et exporter les documents qui en rĂ©sultent pour les Ă©valuations de sĂ©curitĂ©, ce qui fait de la conformitĂ© un rĂ©sultat naturel des bonnes pratiques de sĂ©curitĂ©.
La flexibilitĂ© de Navigator lui permet dâĂȘtre utilisĂ© pour la modĂ©lisation des menaces, quâil sâagisse de fonctionnalitĂ©s individuelles ou de systĂšmes entiers, sans imposer un flux de travail rigide aux Ă©quipes. Cette adaptabilitĂ© permet aux organisations dâintĂ©grer lâapproche de la sĂ©curitĂ© dans leur processus de dĂ©veloppement dâune maniĂšre qui corresponde Ă leurs besoins spĂ©cifiques et Ă leur niveau de maturitĂ©.
Relance de systĂšme en utilisant GitHub Codespaces
Note : Il est normal de voir apparaĂźtre des avertissements au cours de la procĂ©dure dâinstallation. En outre, cela dĂ©pend de la capacitĂ© de mĂ©moire disponible dans le Codespace, la procĂ©dure dâinstallation peut prendre plus de temps que dâhabitude.
Exécuter avec docker compose
Vous pouvez exĂ©cuter lâapplication localement en utilisant docker compose. Il nâest pas recommandĂ© de lâutiliser dans le cadre de la production.
docker compose up
construira la derniÚre image et exécutera l'application sur http://localhost:4000. Si vous souhaitez utiliser la fonctionnalité LLM, vous devez fournir votre propre OPENAI API clé pour gpt-4o-mini.
OPENAI_API_KEY=sk-proj... docker compose up
Si vous apportez des modifications au code source, vous devez alors reconstruire l'image :
docker compose up -d --no-deps --build app
Configuration pour le développement
cd valentine
mix deps.get
mix ecto.create
mix ecto.migrate
mix run priv/repo/seeds.exs
cd assets
npm i
Flux de travail OpenSpec
Ce dépÎt utilise OpenSpec pour le développement piloté par les spécifications.
openspec/specs/contient la base de référence de l'état actuel : ce que le systÚme fait aujourd'hui.openspec/changes/contient les deltas proposés : ce qu'une nouvelle fonctionnalité ou un changement de comportement modifiera.- Les spécifications principales dans
openspec/specs/n'ont pas besoin d'un marqueur supplĂ©mentaire comme « implemented ». Si elles existent, elles dĂ©crivent le comportement dĂ©jĂ en place. - En gĂ©nĂ©ral, le travail sur une nouvelle fonctionnalitĂ© devrait commencer en demandant Ă l'agent IA de crĂ©er un changement OpenSpec, puis ĂȘtre implĂ©mentĂ©, puis synchronisĂ© dans la spĂ©cification de rĂ©fĂ©rence au moment de l'archivage.
Flux de travail typique avec l'agent :
- Dites Ă votre IA :
/opsx:propose <ce-que-vous-voulez-construire>. - Examinez le changement généré dans
openspec/changes/<change-name>/. - Demandez à votre IA d'implémenter le changement approuvé.
- Demandez à votre IA d'archiver le changement une fois que le code et les spécifications sont synchronisés.
OpenAI sur Azure
Vous pouvez également utiliser OpenAI sur Azure. Vous devez fournir les variables d'environnement suivantes :
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_KEY=
Authentification facultative
Vous pouvez utiliser différents fournisseurs d'identité (IDP) si vous définissez les variables d'environnement suivantes :
AWS Cognito:
COGNITO_DOMAIN=<votre-domaine>.amazoncognito.com
COGNITO_CLIENT_ID=vote-client-id
COGNITO_CLIENT_SECRET=votre-client-secret
COGNITO_USER_POOL_ID=votre-user-pool-id
COGNITO_AWS_REGION=votre-aws-region
Google Auth :
GOOGLE_CLIENT_ID=votre-client-id
GOOGLE_CLIENT_SECRET=votre-client-secret
Microsoft Entra ID:
MICROSOFT_CLIENT_ID=votre-client-id
MICROSOFT_CLIENT_SECRET=votre-client-secret
MICROSOFT_TENANT_ID=votre-tenant-id
Dans ce cas, pour accéder à la route /workspaces, vous devez vous authentifier avec l'IDP en visitant /:provider/auth.
Licence
MIT 2025