Stop architectural drift before it ships.

Catch layer breaches, forbidden imports, and import cycles on the next push. Way before they hit prod.

zsh · acme/checkout-service · main
typescriptjavascriptpythongodartrust (soon)githubgitlabslackcirclecigithub actionsvs codetypescriptjavascriptpythongodartrust (soon)githubgitlabslackcirclecigithub actionsvs code
§ 01 · How it works

One file, one binary, one PR comment.

01Declare

Describe your stack.

.driftlog.yaml
rules:
- type: layer
order:
- ui/**
- domain/**
- infra/**
severity: error
02Check

Run on every commit.

zsh
$ driftlog check
Loading .driftlog.yaml
Parsing 2,847 files
Applying 12 rules
2 errors, 1 warning
Drift score 71/100
03Resolve

Fix it in the PR.

PR #2847
✖ 2 drift violations
ui/checkout/Cart.tsx:14
layers.ui→domain
infra import not allowed
Autofix available
§ 02 · Rules

Four shapes. Everything your design doc says.

type: layer

Layers

Top to bottom only.

type: boundary

Boundaries

Cross via interfaces.

type: forbidden

Forbidden imports

Package or path bans.

type: cycles

Cycles

Fail on import loops.

Forty built-ins at launch. Custom matchers in pure YAML.

§ 03 · Pricing

Pay for what ships, not what sits

Start free. Upgrade when your team needs custom rules, tracking, and integrations.

Hobby

$0

free forever
  • 1 repository
  • 6 built-in rules
  • GitHub PR comments
  • Community support
get started
Team

$18

per seat / mo
  • Unlimited repositories
  • 40+ rules + custom rules
  • GitHub & GitLab integration
  • Drift score tracking
  • Slack notifications
  • Priority support
start free trial
Business

$38

per seat / mo
  • Everything in Team
  • SSO / SAML
  • Audit log
  • Custom integrations
  • Dedicated support
  • SLA guarantee
contact sales
§ 04 · FAQ

Frequently asked questions

Yes. Drop a rule file per package, or one at the root that scopes itself with globs. Works with Turborepo, Nx, Lerna, and plain monorepos.

No. Driftlog runs static analysis locally or in your CI. Your code never leaves your environment. We only see the violation report (file paths and rule names), and you can turn that off too.

GitHub Actions, GitLab CI, CircleCI, Jenkins, and any CI that can run a Node.js or Go binary. Setup takes a single line in your pipeline config.

Yes, on the Team plan and up. Rules live in a YAML file at the root of your repo. Enforce layer boundaries, ban specific imports, lock down a module. If you can describe it with a glob, you can write a rule for it.

TypeScript, JavaScript, Dart, Go, and Python. Driftlog uses tree-sitter for parsing, so language support is accurate and fast. More languages are on the roadmap.

Linters check code style and syntax. Driftlog checks architecture: which modules can talk to each other, which layers can import from where, whether your boundaries hold up. They're complementary, not competing. Most teams run both.

§ 05 · Install

Add Driftlog in thirty seconds. Keep it for good.

Free for solo devs and open source. Upgrade to Team when you're ready.

$ npm i -D driftlog