apache-nifi-registry

Expert guidance for Apache NiFi Registry including flow versioning, buckets, Git integration, security, and registry client configuration. Use this when working with flow version control and registry management.

16 stars

Best use case

apache-nifi-registry is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Expert guidance for Apache NiFi Registry including flow versioning, buckets, Git integration, security, and registry client configuration. Use this when working with flow version control and registry management.

Teams using apache-nifi-registry should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/apache-nifi-registry/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/cli-automation/apache-nifi-registry/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/apache-nifi-registry/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How apache-nifi-registry Compares

Feature / Agentapache-nifi-registryStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Expert guidance for Apache NiFi Registry including flow versioning, buckets, Git integration, security, and registry client configuration. Use this when working with flow version control and registry management.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Apache NiFi Registry Expert Skill

You are an expert in Apache NiFi Registry, a central location for storing and managing shared resources like versioned flows.

## Core Concepts

### Architecture
- **Buckets**: Containers for organizing versioned items
- **Versioned Flows**: Snapshots of NiFi process groups
- **Flow Versions**: Individual versions within a flow
- **Registry Clients**: Connections from NiFi to Registry

## Key Features

### Version Control
- Store and manage NiFi flow versions
- Track changes with metadata and comments
- Compare versions side-by-side
- Import/export flows between environments

### Storage Backends
- **File System**: Default local storage
- **Git**: Store flows in Git repositories
- **Database**: Store in relational database (PostgreSQL, MySQL)

## Configuration

### registry.properties
```properties
# Web UI
nifi.registry.web.http.host=0.0.0.0
nifi.registry.web.http.port=18080

# Flow Persistence
nifi.registry.flow.storage.directory=./flow_storage

# Git Flow Persistence Provider
nifi.registry.provider.flow.git.implementation=org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider
nifi.registry.provider.flow.git.Flow Storage Directory=./flow_storage
```

### Git Integration
```xml
<!-- providers.xml -->
<flowPersistenceProvider>
  <class>org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider</class>
  <property name="Flow Storage Directory">./flow_storage</property>
  <property name="Remote To Push">origin</property>
  <property name="Remote Access User">git-user</property>
  <property name="Remote Access Password">password</property>
</flowPersistenceProvider>
```

## Docker Deployment

### Standalone Registry
```yaml
services:
  nifi-registry:
    image: apache/nifi-registry:latest
    ports:
      - "18080:18080"
    environment:
      - LOG_LEVEL=INFO
    volumes:
      - ./nifi-registry/database:/opt/nifi-registry/nifi-registry-current/database
      - ./nifi-registry/flow_storage:/opt/nifi-registry/nifi-registry-current/flow_storage
      - ./nifi-registry/conf:/opt/nifi-registry/nifi-registry-current/conf
```

### With Git Backend
```yaml
services:
  nifi-registry:
    image: apache/nifi-registry:latest
    ports:
      - "18080:18080"
    volumes:
      - ./nifi-registry/flow_storage:/opt/nifi-registry/nifi-registry-current/flow_storage
      - ./nifi-registry/conf/providers.xml:/opt/nifi-registry/nifi-registry-current/conf/providers.xml
    environment:
      - NIFI_REGISTRY_FLOW_PROVIDER=git
      - NIFI_REGISTRY_GIT_REMOTE=https://github.com/org/nifi-flows.git
      - NIFI_REGISTRY_GIT_USER=git-user
      - NIFI_REGISTRY_GIT_PASSWORD=token
```

## Usage Workflow

### Connect NiFi to Registry
1. **Add Registry Client** (NiFi Controller Settings)
   ```
   Name: Dev Registry
   URL: http://nifi-registry:18080
   ```

2. **Create Bucket** (in Registry UI)
   ```
   Bucket Name: Production Flows
   Description: Versioned production data flows
   ```

3. **Version Control a Flow** (in NiFi)
   - Right-click Process Group
   - Version → Start version control
   - Select Registry, Bucket, Flow name
   - Add version comment
   - Click Save

### Version Management
```bash
# Commit Changes (NiFi UI)
Right-click Process Group → Version → Commit local changes

# View Change Log
Right-click Process Group → Version → Show local changes

# Revert Changes
Right-click Process Group → Version → Revert local changes

# Change Version
Right-click Process Group → Version → Change version
```

## Best Practices

### Bucket Organization
```
Buckets by Environment:
├── Development
├── Testing
├── Staging
└── Production

OR by Domain:
├── Data Ingestion
├── ETL Pipelines
├── Analytics
└── Data Distribution
```

### Versioning Strategy
- **Commit frequently** with meaningful messages
- **Tag stable releases** (v1.0.0, v1.1.0)
- **Use branching** for experimental changes (if using Git backend)
- **Document breaking changes** in commit messages
- **Test in lower environments** before promoting

### Naming Conventions
```
Flow Names:
- product-ingestion-flow
- customer-etl-pipeline
- sensor-data-aggregation

Version Comments:
- "feat: Add Kafka consumer for orders"
- "fix: Correct JSON parsing logic"
- "refactor: Optimize database queries"
```

## Security

### Authentication
```properties
# Identity Providers
nifi.registry.security.identity.provider=ldap-identity-provider

# LDAP Configuration
nifi.registry.security.ldap.manager.dn=cn=admin,dc=example,dc=com
nifi.registry.security.ldap.manager.password=password
nifi.registry.security.ldap.url=ldap://ldap-server:389
nifi.registry.security.ldap.user.search.base=ou=users,dc=example,dc=com
```

### Authorization
```xml
<!-- authorizers.xml -->
<authorizers>
  <userGroupProvider>
    <identifier>file-user-group-provider</identifier>
    <class>org.apache.nifi.registry.security.authorization.file.FileUserGroupProvider</class>
    <property name="Users File">./conf/users.xml</property>
    <property name="Initial User Identity 1">CN=admin, OU=NiFi</property>
  </userGroupProvider>

  <accessPolicyProvider>
    <identifier>file-access-policy-provider</identifier>
    <class>org.apache.nifi.registry.security.authorization.file.FileAccessPolicyProvider</class>
    <property name="User Group Provider">file-user-group-provider</property>
    <property name="Authorizations File">./conf/authorizations.xml</property>
    <property name="Initial Admin Identity">CN=admin, OU=NiFi</property>
  </accessPolicyProvider>
</authorizers>
```

## API Usage

### REST API Examples
```bash
# List buckets
curl http://localhost:18080/nifi-registry-api/buckets

# Create bucket
curl -X POST http://localhost:18080/nifi-registry-api/buckets \
  -H "Content-Type: application/json" \
  -d '{"name":"MyBucket","description":"Test bucket"}'

# List flows in bucket
curl http://localhost:18080/nifi-registry-api/buckets/{bucketId}/flows

# Get flow versions
curl http://localhost:18080/nifi-registry-api/buckets/{bucketId}/flows/{flowId}/versions

# Export flow version
curl http://localhost:18080/nifi-registry-api/buckets/{bucketId}/flows/{flowId}/versions/{version}/export \
  -o flow-export.json
```

## Gitea Integration

When using Gitea as a Git backend for NiFi Registry:

### Setup Steps
1. **Create Gitea Repository**
   ```bash
   # In Gitea UI
   Repository: nifi-flows
   Visibility: Private
   Initialize: Yes (with README)
   ```

2. **Generate Access Token**
   ```bash
   # Gitea Settings → Applications → Generate Token
   Permissions: repo (all)
   ```

3. **Configure Registry providers.xml**
   ```xml
   <flowPersistenceProvider>
     <class>org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider</class>
     <property name="Flow Storage Directory">./flow_storage</property>
     <property name="Remote To Push">origin</property>
     <property name="Remote Access User">gitea-user</property>
     <property name="Remote Access Password">gitea-access-token</property>
   </flowPersistenceProvider>
   ```

4. **Initialize Git Repository**
   ```bash
   cd flow_storage
   git init
   git remote add origin http://gitea:3000/user/nifi-flows.git
   git config user.name "NiFi Registry"
   git config user.email "registry@nifi.local"
   ```

## Monitoring & Troubleshooting

### Logs
```bash
# Main logs
logs/nifi-registry-app.log    # Application log
logs/nifi-registry-user.log   # User actions
logs/nifi-registry-bootstrap.log  # Bootstrap

# Enable DEBUG
conf/logback.xml → Set level to DEBUG
```

### Common Issues
| Issue | Solution |
|-------|----------|
| Cannot connect from NiFi | Check network, firewall, registry URL |
| Git push fails | Verify credentials, remote URL, network |
| Flow not visible | Check bucket permissions, user authorization |
| Version conflict | Pull latest, resolve conflicts, recommit |

## Migration & Backup

### Export All Flows
```bash
# Using NiFi Registry CLI (part of NiFi Toolkit)
registry list-buckets
registry export-all-flows -b bucket-id -o /backup/flows/
```

### Import Flows
```bash
registry import-flow-version -f /backup/flows/flow.json -b target-bucket-id
```

### Backup Strategy
```bash
# 1. File System Backend
tar -czf registry-backup-$(date +%Y%m%d).tar.gz flow_storage/ database/

# 2. Git Backend
cd flow_storage && git push --all origin

# 3. Database (if using DB backend)
pg_dump nifi_registry > registry-backup-$(date +%Y%m%d).sql
```

## Resources
- [NiFi Registry Documentation](https://nifi.apache.org/registry.html)
- [REST API Guide](https://nifi.apache.org/docs/nifi-registry-docs/rest-api/index.html)
- [Git Provider Setup](https://nifi.apache.org/docs/nifi-registry-docs/html/administration-guide.html#git-persistence-provider)

Related Skills

unified-cicd-platform

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user is choosing a CI/CD platform, migrating between CI/CD providers, consolidating build and deployment pipelines, designing pipeline architecture across application and infrastructure code, setting up drift detection, configuring OIDC authentication for pipelines, or discussing the operational cost of multiple CI/CD systems. Covers platform selection, the cost of multi-platform CI/CD, what 'everything on one platform' means, OIDC pipeline authentication, Jenkins migration, and scheduled pipeline jobs like drift detection.

container-registry

16
from diegosouzapw/awesome-omni-skill

Container registry management patterns covering tagging strategy, immutability, retention policies, vulnerability scanning, multi-arch builds, and CI/CD integration. Internal reference for agents managing infrastructure.

azure-containerregistry-py

16
from diegosouzapw/awesome-omni-skill

Azure Container Registry SDK for Python. Use for managing container images, artifacts, and repositories.

unified-find-skills

16
from diegosouzapw/awesome-omni-skill

Helps users discover and install agent skills from skills.sh, clawhub.com, and tessl.io. Use when the user asks to find a skill for a task, extend agent capabilities, or search for tools/workflows.

moai-lang-unified

16
from diegosouzapw/awesome-omni-skill

Unified enterprise programming language skill covering 25+ languages including Python 3.13, TypeScript 5.9, Go 1.23, Rust 1.91, Java 21, JavaScript ES2025, C++, C#, PHP, Swift, Kotlin, Scala, Elixir, Ruby, R, SQL, Shell, and more with patterns, best practices, and Context7 integration

canifi-skill-generator

16
from diegosouzapw/awesome-omni-skill

Self-evolving skill that enables Canifi to create, install, and manage new skills autonomously

apache-nifi

16
from diegosouzapw/awesome-omni-skill

Expert guidance for Apache NiFi data integration platform including flow design, processors, controller services, process groups, NiFi Registry integration, and cluster configuration. Use this when working with data flows, processors, or NiFi configuration.

apache-spark-data-processing

16
from diegosouzapw/awesome-omni-skill

Complete guide for Apache Spark data processing including RDDs, DataFrames, Spark SQL, streaming, MLlib, and production deployment

apache-airflow-orchestration

16
from diegosouzapw/awesome-omni-skill

Complete guide for Apache Airflow orchestration including DAGs, operators, sensors, XComs, task dependencies, dynamic workflows, and production deployment

apache

16
from diegosouzapw/awesome-omni-skill

Apache HTTP Server 配置

agent-registry

16
from diegosouzapw/awesome-omni-skill

Guide for managing the Agent Registry - database-backed agent configuration system. Use when asked to "configure agents", "manage skills", "set tool permissions", "create context rules", or when working with agent assignments per platform/chat. Covers dashboard UI, API endpoints, CLI commands, and MCP tools.

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development