PhoenixFlight
  • GitHub
  • PhoenixFile vs Dockerfile: Process Packaging vs Dynamic Runtime Participation

    Short Answer

    A Dockerfile describes a packaged operating system process with all its dependencies. A PhoenixFile describes a governed participant inside a dynamic runtime network. Together, they form a robust execution model: Docker guarantees the process runs, while PhoenixFlight governs its capability discovery, security policies, and cluster membership.

    In modern cloud-native architectures, containerization is essential. A Dockerfile provides an immutable definition of system packages, language runtimes, and local paths. However, when orchestrating cooperative AI agents or dynamic virtual nodes, compile-time process declarations are not sufficient to handle runtime behaviors.

    A PhoenixFile defines a dynamic participation contract. Instead of focusing on file-system layers, it declares how an execution module interacts with neighboring modules: what resources it requests, its identity certificates, verification rules, allowed handoff operations, and telemetry reporting specifications.

    Feature-by-Feature Comparison

    Feature Dockerfile PhoenixFile
    Primary Focus Immutable container packaging, library dependencies, file-system layers. Dynamic cluster participation, capability discovery, governance policy rules.
    Execution Lifecycle Starts, runs, and stops as a single operating system process. Enters, rebalances workloads, hands off state context, and exits the runtime network.
    Workload Governance Handled externally by container orchestrators (e.g. CPU/Memory limits). Embedded natively via task routing, capability validation, and trust scores.
    State Management Volume mounting, stateful sets, or ephemeral storage. Logical packet handoff (FlightPacket schemas) with state validation.
    Inter-Agent Routing Static TCP ports, environment variables, or service meshes. Dynamic capability matching and cryptographically signed handoff contracts.

    Symbiotic Integration

    Because they address separate layers of the stack, developers combine them. You write a Dockerfile to package your Python code, model checkpoints, and PyTorch environment. Then, you write a PhoenixFile to describe how that specific container registers itself as an active agent, signs audit ledgers, and migrates task context dynamically. This symbiotic integration guarantees process-level portability and runtime-level governance.

    Frequently Asked Questions

    1. Do I write a PhoenixFile instead of a Dockerfile?
    No. You write a Dockerfile to package the application binaries. You write a PhoenixFile to define how the application behaves as a participant inside the PhoenixFlight dynamic membership runtime.
    2. How is a PhoenixFile parsed and validated?
    The PhoenixFlight CLI includes validation engines that compile the PhoenixFile YAML configuration, checks it against core membership schemas, and verifies that declared agent interfaces and capabilities align with runtime rules.
    3. What is a .pflight bundle?
    A .pflight bundle is the compiled binary package created by the bundle builder tool. It includes the validated PhoenixFile manifest, application entry points, and local policies, making it ready for distribution across the PhoenixFlight registry.