Version: 2.6.0 Status: Production-Ready
An Obsidian plugin that transforms your vault into a comprehensive enterprise architecture management platform. Implements a 7-layer enterprise architecture model extending the C4 approach from market strategy to implementation code.
BAC4 v2.0 implements a complete enterprise architecture framework:
- Layer 1: Market - Market segments, customer needs, trends
- Layer 2: Organisation - Business units, departments, teams
- Layer 3: Capability - Business capabilities and functions
- Layer 4: Context - C4 Level 1 - System landscape
- Layer 5: Container - C4 Level 2 - Technical containers
- Layer 6: Component - C4 Level 3 - Internal components
- Layer 7: Code - Implementation artifacts, code repositories
Each layer has specialized node types and validation rules to ensure architectural consistency.
Note: Coming soon to Obsidian Community Plugins! For now, use manual installation below.
- Open Obsidian Settings
- Navigate to Community Plugins
- Disable Restricted Mode (if enabled)
- Click Browse and search for "BAC4"
- Click Install
- Enable the plugin in the Installed Plugins list
-
Download the latest release from GitHub Releases
- Download
bac4-v2.0.0.zip
- Download
-
Extract the files to your vault's plugins folder:
# Navigate to your vault's plugins directory cd /path/to/your-vault/.obsidian/plugins/ # Create BAC4 plugin directory mkdir bac4 # Extract the zip contents into the directory unzip ~/Downloads/bac4-v2.0.0.zip -d bac4/
-
Enable the plugin in Obsidian:
- Open Obsidian Settings
- Go to Community Plugins
- Find "BAC4" in your installed plugins
- Toggle it ON
-
Reload Obsidian (Cmd+R on Mac, Ctrl+R on Windows/Linux)
If you use the BRAT plugin:
- Install and enable BRAT from Community Plugins
- Open BRAT settings
- Click Add Beta plugin
- Enter:
DavidROliverBA/bac4 - Enable BAC4 in Community Plugins
After installation, verify BAC4 is working:
- Open Command Palette (Cmd+P / Ctrl+P)
- Type "BAC4"
- You should see commands like:
BAC4: Create New Market Diagram (Layer 1)BAC4: Create New Organisation Diagram (Layer 2)BAC4: Create New Capability Diagram (Layer 3)BAC4: Create New Context Diagram (Layer 4)- And more for each layer...
- Visual canvas powered by React Flow
- 7 specialized diagram types (one per layer)
- Layer-specific validation rules
- Custom node types for each architectural layer
- Directional edges with labels
- Property panel for editing node/edge properties
- Auto-save with debouncing
Layer 1: Market
- Market segment nodes with market size, growth rate, competitors, trends
Layer 2: Organisation
- Organisation nodes with business units, departments, headcount, locations
Layer 3: Capability
- Capability nodes for business and technical capabilities
Layer 4: Context (C4 Level 1)
- System and Person nodes for system landscape diagrams
Layer 5: Container (C4 Level 2)
- Container nodes for applications, databases, file systems
Layer 6: Component (C4 Level 3)
- Component and Cloud Component nodes for internal components
- AWS, Azure, GCP component libraries
Layer 7: Code
- Code artifact nodes with GitHub integration
- Support for files, classes, functions, schemas, tables
- Drill-down: Double-click nodes to open child diagrams
- Property panel linking: Connect diagrams via dropdowns
- Self-contained links embedded in node data
- Auto-update references when files are renamed
- Layer validation prevents mixing incompatible node types
Create multiple presentation views of the same architecture data:
- One .bac4 file, many .bac4-graph views - Separate semantic data from presentation
- Pre-configured templates - C4 Context, C4 Container, C4 Component, Wardley Map, or Custom
- Seamless switching - Change views without losing your place
- Independent positioning - Each layout has its own node positions and visual style
- Copy or start fresh - Create new layouts from scratch or copy current state
Example Use Cases:
Context.bac4→Context.bac4-graph(default C4 view) +Context-Wardley.bac4-graph(Wardley Map view)API.bac4→API-Container.bac4-graph(C4 Container) +API-Timeline.bac4-graph(temporal evolution)- View the same architecture from different stakeholder perspectives (technical, business, compliance)
How to Use:
- Open any diagram - Layout dropdown appears in toolbar
- Click "+" to create layout - Choose template (C4 Context, Wardley Map, Custom, etc.)
- Name your layout - Example: "Wardley Map View" or "Executive Overview"
- Choose starting point:
- Copy current layout (preserves node positions)
- Start with blank canvas
- Switch layouts - Select from dropdown, canvas updates instantly
- Edit independently - Each layout remembers its own node positions and zoom level
- Rename/delete - Right-click layout in dropdown for more options
Technical Details:
- Default layout:
Context.bac4-graph(matches file basename) - Named layouts:
Context-Wardley.bac4-graph(hyphen-separated) - All layouts reference the same
Context.bac4semantic data - Changing node properties updates all layouts
- Each layout has independent snapshot timelines
- AWS services (Lambda, S3, DynamoDB, API Gateway, etc.)
- Drag & drop cloud components onto Component diagrams
- Component palette (context-aware)
- Extensible to Azure and GCP
- PNG, JPEG, SVG export
- Obsidian Canvas format (.canvas)
- Native Graph View with diagram relationships
- Dual-file format (v2.5.0+):
.bac4files - Semantic data (node properties, knowledge, metrics).bac4-graphfiles - Presentation data (layout, edges, snapshots)
- Multiple layouts (v2.6.0): One
.bac4file can have many.bac4-graphviews - Version metadata embedded
- Git-friendly JSON format
- Multi-tab support
- Auto-registration of node relationships
- Install the plugin (see Installation above)
- Reload Obsidian (Cmd+R or Ctrl+R)
- Open Command Palette (Cmd+P)
- Choose layer:
BAC4: Create New Market Diagram (Layer 1)- Start with market strategyBAC4: Create New Context Diagram (Layer 4)- Start with system architecture- Or any other layer based on your needs
- Select diagram type using the layer selector dropdown
- Add nodes by clicking toolbar buttons or dragging
- Connect nodes by dragging from one node to another
- Edit properties using the right-side property panel
- Link to child diagrams via property panel dropdowns
- Export using toolbar buttons (PNG, SVG, Canvas)
- Node.js 18+ and npm
- Obsidian desktop application
- Git
-
Clone the repository:
git clone https://github.com/DavidROliverBA/bac4.git cd bac4 -
Install dependencies:
npm install
-
Build the plugin:
npm run build
-
Link to Obsidian vault for testing:
# Create a symlink in your vault's plugins folder ln -s /path/to/bac4 /path/to/your-vault/.obsidian/plugins/bac4 -
Enable the plugin in Obsidian:
- Open Obsidian Settings
- Go to Community Plugins
- Enable "BAC4"
npm run dev # Watch mode with hot reload
npm run build # Production build
npm test # Run unit tests
npm run test:watch # Tests in watch mode
npm run test:coverage # Coverage report
npm run lint # Lint TypeScript
npm run format # Format with Prettier
npm run fix # Format + lint fix
npm run typecheck # TypeScript checkingbac4/
├── src/
│ ├── core/ # Core plugin logic, settings
│ ├── ui/
│ │ ├── canvas-view.tsx # Main React Flow canvas
│ │ ├── nodes/ # Custom node components
│ │ ├── components/ # UI components (toolbar, panels)
│ │ ├── modals/ # Modal dialogs
│ │ └── settings-tab.ts # Settings UI
│ ├── services/
│ │ ├── diagram-navigation-service.ts
│ │ └── component-library-service.ts
│ ├── data/ # File I/O, parsing
│ ├── utils/ # Utility functions
│ │ └── layer-validation.ts # Layer validation rules
│ └── main.ts # Plugin entry point
├── component-library/ # Cloud component definitions
│ ├── aws/
│ └── saas/
├── tests/ # Unit tests
├── docs/ # Documentation
│ ├── versions/ # Historical version docs
│ └── releases/ # Release notes
├── manifest.json # Obsidian plugin manifest
└── package.json # Dependencies
BAC4 follows a layered plugin architecture:
-
UI Layer (React + React Flow)
- Canvas editor with custom nodes/edges
- Unified toolbar with layer selector
- Property panel for editing
- Layer-specific validation
-
Service Layer
DiagramNavigationService- Hierarchy managementComponentLibraryService- Cloud component libraryErrorHandler- Centralized error handling
-
Data Layer
.bac4timeline-based JSON format- File I/O with Obsidian vault API
- Auto-save with debouncing
- Layer validation utilities
- Frontend: React 19, TypeScript
- Canvas: React Flow (XyFlow)
- Build: esbuild
- Testing: Jest, ts-jest
- Formatting: Prettier, ESLint
- CLAUDE.md - Complete developer context guide
- Layer Validation - Node type validation rules
- Version History - Historical documentation
BAC4 has an ambitious roadmap to become the definitive enterprise architecture platform. See ROADMAP.md for the complete strategic vision.
v2.3.0 - Enhanced Navigation & UX (Q4 2025)
- Click-through navigation between layers
- Breadcrumb trail across architectural layers
- Enhanced drill-down experience
- Accessibility improvements
v2.4.0 - AI Integration (Q1 2026)
- AI-powered diagram generation ✅ Started in v2.2.0
- Design analysis and anti-pattern detection
- Anthropic Claude API integration ✅ Complete
- MCP workflow support ✅ Complete
v2.5.0 - Data Format Evolution (Q1 2026) 🚧 In Development
- Dual-file format (semantic + presentation separation)
- Wardley Mapping support
- Graph database readiness
- Enhanced knowledge management
v3.0.0 - Enterprise Features (Q2 2026)
- Planned vs. Actual tracking
- Architectural drift detection
- Estate dashboard
- Team collaboration and role-based access
- Dynamic Documentation & Modeling - Visual + narrative architecture artifacts
- AI-Driven Insights - Automated analysis, validation, and recommendations
- SDLC Integration - Native integration with IDEs, CI/CD, and repositories
- Advanced Search & Traceability - Semantic search and impact analysis
- Enterprise Knowledge Graph - Connected systems, APIs, teams, and capabilities
- Standards Support - TOGAF, ArchiMate, BPMN, UML interoperability
- Tacit Knowledge Capture - Meeting transcripts, whiteboard recognition
- Security & Governance - RBAC, audit trails, compliance
- Personalization - Role-based views and intelligent workflows
Contributions are welcome! Please:
- Read CLAUDE.md for developer context
- Run tests:
npm test - Format code:
npm run fix - Submit PR with clear description
Before committing:
npm run fix # Format and lint
npm run typecheck # Verify types
npm test # Run tests
npm run build # Ensure it buildsMIT License - see LICENSE file for details
- GitHub: https://github.com/DavidROliverBA/bac4
- Obsidian: https://obsidian.md
- C4 Model: https://c4model.com
- Built with: The BMAD Method (Breakthrough Method of Agile AI-driven Development)
- AI Partner: Claude Code (Anthropic)
- Canvas Library: React Flow / XyFlow
- C4 Model: Simon Brown
Powered by AI, built for humans!
Last updated: 2025-10-29 (v2.6.0)