Skip to content

Ferrocodex is a secure operational technology (OT) configuration management platform designed for industrial environments. It provides offline-first configuration management for industrial equipment with enterprise-grade security features.

License

Notifications You must be signed in to change notification settings

HillviewCap/ferrocodex

Ferrocodex

Ferrocodex Logo

πŸ—οΈ Secure OT Configuration Management Platform

GitHub release License: AGPL v3 Build Status Documentation Status

A cross-platform desktop application for secure offline-first configuration management in operational technology (OT) environments.

πŸš€ Overview

Ferrocodex is a secure configuration management platform designed specifically for industrial equipment and operational technology environments. Built with Tauri 2.0, it combines the power of Rust's security and performance with React's modern UI capabilities to deliver an offline-first solution for managing critical infrastructure configurations.

Key Features

  • πŸ”’ Enterprise-grade Security: Role-based access control, session management, and audit trails
  • πŸ’Ύ Offline-First Architecture: Full functionality without internet connectivity
  • πŸ” Data Protection: AES-256 encryption for all stored configurations (coming in v2.0)
  • 🌐 Cross-Platform: Native desktop apps for Windows, macOS, and Linux
  • 🎯 OT-Focused: Designed for industrial control systems and equipment
  • πŸ“ Comprehensive Audit Trail: Track all configuration changes and access
  • 🌳 Version Control: Built-in branching and versioning for configurations
  • πŸ‘₯ Multi-User Support: Administrator and Engineer role separation

✨ New in v0.5.0 - Asset Hierarchy Management

  • πŸ—οΈ Complete Asset Hierarchy System: Tree-based navigation with drag-and-drop, virtualized rendering for large datasets
  • πŸ” Advanced Search & Filtering: SQLite FTS5 full-text search with sub-200ms performance
  • πŸ“¦ Bulk Operations: Import/export, bulk rename, and batch metadata updates
  • ⌨️ Keyboard Navigation: Full keyboard shortcuts for power users
  • πŸ”„ Workflow Management: Multi-step workflows with draft management and progress tracking
  • πŸ›‘οΈ Enhanced Security: Asset name validation, file integrity checks, and compliance indicators
  • πŸ“Š Metadata Management: Dynamic schemas, field templates, and conditional logic
  • πŸ“ˆ Performance Optimized: Virtualized tree rendering, optimized search indexes, and efficient caching

πŸ“‹ Prerequisites

  • Node.js: 18+
  • Rust: 1.78.0+
  • Platform-specific dependencies:
    • Linux: libwebkit2gtk-4.1-dev, build-essential, curl, wget, file, libgtk-3-dev, librsvg2-dev
    • macOS: Xcode Command Line Tools
    • Windows: Microsoft Visual Studio C++ Build Tools

πŸ› οΈ Installation

From Source

  1. Clone the repository:

    git clone https://github.com/HillviewCap/ferrocodex.git
    cd ferrocodex
  2. Install dependencies:

    npm install
  3. Install platform dependencies (Linux example):

    sudo apt update
    sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libgtk-3-dev librsvg2-dev

Pre-built Binaries

Download the latest release for your platform from the releases page.

πŸ’» Development

Running in Development Mode

# Start the development server (both frontend and backend)
npm run dev

# Or from the desktop app directory
cd apps/desktop
npm run tauri:dev

The application will start with hot reload enabled for both the React frontend and Rust backend.

Building for Production

# Build all packages
npm run build

# Build platform-specific binary
cd apps/desktop
npm run tauri:build

Testing

# Run all tests
npm run test

# Frontend tests with coverage
cd apps/desktop
npm run test:coverage

# Backend tests
cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml

πŸ“ Project Structure

ferrocodex/
β”œβ”€β”€ apps/
β”‚   └── desktop/              # Main Tauri application
β”‚       β”œβ”€β”€ src/              # React frontend
β”‚       β”‚   β”œβ”€β”€ components/   # UI components
β”‚       β”‚   β”‚   β”œβ”€β”€ hierarchy/     # Asset tree views and navigation
β”‚       β”‚   β”‚   β”œβ”€β”€ forms/         # Dynamic metadata forms
β”‚       β”‚   β”‚   β”œβ”€β”€ security/      # Security validation components
β”‚       β”‚   β”‚   β”œβ”€β”€ workflow/      # Multi-step workflow components
β”‚       β”‚   β”‚   β”œβ”€β”€ bulk/          # Bulk operations UI
β”‚       β”‚   β”‚   └── metadata/      # Metadata management
β”‚       β”‚   β”œβ”€β”€ store/        # Zustand state management
β”‚       β”‚   β”œβ”€β”€ types/        # TypeScript types
β”‚       β”‚   └── utils/        # Utility functions
β”‚       β”œβ”€β”€ src-tauri/        # Rust backend
β”‚       β”‚   └── src/
β”‚       β”‚       β”œβ”€β”€ assets/        # Equipment management
β”‚       β”‚       β”œβ”€β”€ associations/  # File associations
β”‚       β”‚       β”œβ”€β”€ audit/         # Audit logging
β”‚       β”‚       β”œβ”€β”€ auth/          # Authentication
β”‚       β”‚       β”œβ”€β”€ branches/      # Configuration branching
β”‚       β”‚       β”œβ”€β”€ bulk/          # Bulk operations backend
β”‚       β”‚       β”œβ”€β”€ configurations/# Config file management
β”‚       β”‚       β”œβ”€β”€ database/      # SQLite layer with FTS5
β”‚       β”‚       β”œβ”€β”€ encryption/    # AES-256 encryption
β”‚       β”‚       β”œβ”€β”€ metadata/      # Dynamic metadata & search
β”‚       β”‚       β”œβ”€β”€ security/      # Security validation
β”‚       β”‚       β”œβ”€β”€ users/         # User management
β”‚       β”‚       β”œβ”€β”€ validation/    # Input validation
β”‚       β”‚       └── workflow/      # Workflow management
β”‚       └── package.json      
β”œβ”€β”€ packages/
β”‚   └── shared-types/         # Shared TypeScript types
β”œβ”€β”€ .github/
β”‚   └── workflows/           # GitHub Actions
β”œβ”€β”€ CLAUDE.md                # AI assistant instructions
β”œβ”€β”€ SECURITY.md              # Security policy
└── package.json             # Workspace configuration

πŸ”§ Configuration

Ferrocodex stores its data in platform-specific locations:

  • Windows: %APPDATA%/com.ferrocodex.app/
  • macOS: ~/Library/Application Support/com.ferrocodex.app/
  • Linux: ~/.config/com.ferrocodex.app/

The SQLite database is automatically initialized on first run with:

  • WAL mode for better concurrency
  • Optimized pragma settings
  • Automatic schema migrations

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow the existing code style
  • Add tests for new functionality
  • Update documentation as needed
  • Ensure all tests pass before submitting

πŸ”’ Security

Security is paramount for OT environments. Please report vulnerabilities responsibly:

πŸ“œ License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.

This means that any modifications or derivative works must also be released under the AGPL-3.0 license, and if you run a modified version on a server, you must offer the source code to users of that server.

πŸ™ Acknowledgments

Built with:

  • Tauri - Build smaller, faster, and more secure desktop applications
  • React - A JavaScript library for building user interfaces
  • Ant Design - Enterprise-class UI design language
  • Rust - Performance, reliability, and productivity

πŸ“ž Support


Made with ❀️ for the OT community

About

Ferrocodex is a secure operational technology (OT) configuration management platform designed for industrial environments. It provides offline-first configuration management for industrial equipment with enterprise-grade security features.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •