Getting started
Scryr combines a typed Python manifest SDK, a Rust CLI and GraphQL server, and a React/Three.js map. The standalone CLI embeds the map and SDK, so one install is enough for the normal local workflow.
Install
Section titled “Install”Homebrew
Section titled “Homebrew”brew install scryr-app/tap/scryrnpm install --global @scryr/clicargo install crystal-cliNative release archives for macOS and Linux on ARM64 and x86_64 are also available from GitHub Releases.
scryr --versionscryr --helpScryr is pre-1.0. Keep the CLI and the manifests in a project versioned together.
Create index.scry
Section titled “Create index.scry”Save this file at the root of your repository:
from scryr import Diagram, Github, Info, Manifestfrom scryr.types import ProgrammingLanguage, WebFramework
web = Manifest( manifest_id="apps/web", name="Web App", connections=[Manifest(name="Public API")], info=Info( description="Customer-facing application", language=ProgrammingLanguage.typescript, frameworks=[WebFramework.react], owner_team="Product", ),)
api = Manifest( manifest_id="services/api", name="Public API", connections=[Manifest(name="Postgres")], info=Info( description="Business API", language=ProgrammingLanguage.python, frameworks=[WebFramework.fastapi], owner_team="Platform", ), github=Github(repo_url="https://github.com/acme/api"),)
database = Manifest(name="Postgres")architecture = Diagram(name="System architecture", manifests=[web, api, database])Connection targets are resolved by manifest name. The reference in Manifest(name="Public API") must match the real component name exactly.
Check and open the map
Section titled “Check and open the map”scryr checkscryr serve --watchBy default, serve starts the embedded UI and GraphQL server at 127.0.0.1:8000, formats and validates the source, uploads the artifact, and opens the browser. Watch mode keeps the previous valid diagram visible when a later edit fails.
On first execution, Scryr provisions its own pinned uv, managed Python runtime, and per-project environment. It does not change your system Python.
Use another entrypoint
Section titled “Use another entrypoint”--path defaults to index.scry, and --manifest-dir defaults to the current directory.
scryr check --path architecture/platform.scry --manifest-dir .scryr serve --path services/catalog/index.scry --manifest-dir .Nested entrypoints are grouped by their parent folder in the map selector.
