STRAND
Docs
v0.4.2
Getting started / What is Strand
Introduction

What is STRAND

Real-time architecture mapping for engineering teams shipping across interconnected, service-heavy systems.


STRAND maps every service, dependency, and change in your stack into a single living model. When something shifts whether it's a deploy, a config update, or a new service, the map reflects it immediately across your entire workspace.

The system is built around four actions: map your services, trace dependencies, scope changes, and read impact. No backlog. No ceremony. No diagrams that go stale.

Designed for teams between 1 and 20 engineers. For larger organizations, contact us to discuss enterprise options.
Core concepts
ConceptWhat it means
ServiceAny node in your architecture: API, worker, database, external integration
DependencyA directed edge between two services indicating a runtime relationship
ChangeAny deploy, config update, or rollback logged against a service
AnalysisAutomatic blast-radius calculation triggered on every change
Getting started

Workspace setup

STRAND creates a workspace automatically when you sign up. Your workspace is where all services, changes, and team activity live.


Initial configuration
  1. 01Sign in at app.strand.io and accept the workspace invite.
  2. 02Set your workspace slug. This appears in all API calls and webhook URLs.
  3. 03Choose your default environment: production, staging, or custom.
  4. 04Register your first service to activate the dependency graph.
Environment scoping

Workspaces support multiple environments. Services, changes, and health signals are all scoped per environment. A service registered in production does not automatically appear in staging.

Getting started

Inviting your team

Add engineers, SREs, and stakeholders to your workspace. Access is role-scoped.


Roles
RoleAccess
OwnerFull workspace control, billing, API key management
AdminManage services, members, and environments
EngineerLog changes, view analysis, register services
ViewerRead-only access to all workspace data
Invites expire after 72 hours. Resend from Settings Members.
Services

Registering a service

Every node in your architecture begins as a registered service. Registration is the source of truth for what STRAND knows about your stack.


Via the API
# POST /v1/services { "name": "auth-service", "version": "v2.1.4", "environment": "production", "tags": ["auth", "critical-path"] }
Fields
FieldTypeNotes
namestringUnique within the environment
versionstringSemVer or arbitrary tag
environmentstringMust match a configured environment
tagsstring[]Used for filtering and grouping in the UI
Services

Defining dependencies

Dependencies form the edges of your architecture graph. STRAND uses them to calculate blast radius and trace change propagation.


A dependency is a directed edge from one service to another. If the upstream fails, the downstream is affected. Criticality determines how the relationship is weighted in impact analysis.

# POST /v1/dependencies { "from": "order-service", "to": "auth-service", "criticality": "hard" }
Hard: service cannot function without the dependency.
Soft: degraded but operational if the dependency is unavailable.
Services

Health signals

Health signals update the live status of each service in the dependency graph in real time.


StateMeaning
healthyOperating within expected parameters
warningDegraded: latency or error rate elevated
criticalFailing: downstream services at risk
unknownNo signal received within the TTL window

STRAND marks a service as unknown automatically if no signal arrives within the configured TTL window (default 5 minutes).

# POST /v1/services/:id/health { "state": "warning", "latency_ms": 142, "error_rate": 0.03 }
Changes

Logging a change

Every deploy, config update, or rollback is logged as a change. Changes are the unit of analysis in STRAND.


# POST /v1/changes { "service": "auth-service", "type": "deploy", "version": "v2.2.0", "author": "mia.thornton", "note": "Auth token expiry patch" }
Changes trigger an automatic impact analysis against the current dependency graph on every submission.
Change types
TypeWhen to use
deployNew version pushed to an environment
configEnvironment variable or runtime config changed
rollbackService reverted to a prior version
hotfixUnplanned patch applied directly to production
Changes

Impact analysis

When a change is logged, STRAND traverses the dependency graph to identify all affected downstream services and their risk level.


Analysis runs automatically on every change. The result is a ranked list of affected services, each scored by risk level based on dependency type, current health, and historical change data.

Risk levels
LevelCondition
highHard dependency, service currently healthy — maximum blast radius
mediumSoft dependency or service already in a degraded state
lowIndirect dependency (2+ hops) or isolated service

Reports are exportable as JSON or PDF from the analysis panel, or via /v1/changes/:id/analysis.

Changes

Rollback

Rollbacks are logged as a change type and immediately update the service version in the dependency graph.


# PATCH /v1/changes/:id { "status": "rolled_back", "rolled_back_to": "v2.1.4" }

STRAND restores the previous version reference and re-runs impact analysis against the rolled-back state, giving your team a clean post-incident snapshot of the system.

API

Authentication

All API requests are authenticated via bearer token. Tokens are workspace-scoped and managed under Settings → API Keys.


Authorization: Bearer sk_strand_••••••••••••••••
Keep your API key out of source control. Rotate immediately if exposed. STRAND does not log key values after creation.
API

Services endpoint

Query, register, and update services programmatically via the REST API.


MethodPathAction
GET/v1/servicesList all services in workspace
POST/v1/servicesRegister a new service
GET/v1/services/:idFetch a single service
PATCH/v1/services/:idUpdate name, version, or tags
DELETE/v1/services/:idRemove service from the graph
API

Changes endpoint

Log, query, and manage changes programmatically. Changes trigger analysis automatically on creation.


MethodPathAction
GET/v1/changesList all changes in workspace
POST/v1/changesLog a new change
GET/v1/changes/:idFetch a single change
PATCH/v1/changes/:idUpdate status (e.g. rolled_back)
GET/v1/changes/:id/analysisFetch impact analysis report