> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/pion/ice/llms.txt
> Use this file to discover all available pages before exploring further.

# Pion ICE Documentation

<div className="relative overflow-hidden bg-gradient-to-br from-[#e23d37] to-[#c12f2a] dark:from-[#1a1d27] dark:to-[#0f1117] py-20">
  <div className="absolute inset-0 bg-black/20 dark:bg-black/40" />

  <div className="relative max-w-7xl mx-auto px-6 lg:px-8">
    <div className="grid lg:grid-cols-12 gap-12 items-center">
      <div className="lg:col-span-7">
        <h1 className="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6">
          Interactive Connectivity Establishment for Go
        </h1>

        <p className="text-lg sm:text-xl text-white/90 max-w-2xl mb-8">
          A complete implementation of the ICE protocol for peer-to-peer networking and NAT traversal in Go applications
        </p>

        <div className="flex flex-wrap gap-4">
          <a href="/quickstart" className="inline-flex items-center px-6 py-3 rounded-lg bg-white text-[#e23d37] font-semibold hover:bg-gray-100 transition-colors no-underline">
            Get Started
          </a>

          <a href="/api/agent" className="inline-flex items-center px-6 py-3 rounded-lg border border-white/30 bg-white/10 text-white font-semibold hover:bg-white/20 transition-colors no-underline">
            API Reference
          </a>
        </div>
      </div>
    </div>
  </div>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <h2 className="text-2xl sm:text-3xl font-semibold text-gray-900 dark:text-white mb-4">
    Quick start
  </h2>

  <p className="text-base text-gray-600 dark:text-gray-400 mb-8">
    Get up and running with Pion ICE in minutes
  </p>

  <Steps>
    <Step title="Install the package">
      Add Pion ICE to your Go project using go get:

      ```bash theme={null}
      go get github.com/pion/ice/v4
      ```
    </Step>

    <Step title="Create an ICE agent">
      Initialize a new agent with default configuration:

      ```go theme={null}
      package main

      import (
          "context"
          "github.com/pion/ice/v4"
      )

      func main() {
          agent, err := ice.NewAgent()
          if err != nil {
              panic(err)
          }
          defer agent.Close()
      }
      ```
    </Step>

    <Step title="Establish connectivity">
      Exchange candidates and credentials with your peer to establish a connection:

      ```go theme={null}
      // Get local credentials
      ufrag, pwd, err := agent.GetLocalUserCredentials()

      // Set remote credentials (from peer)
      err = agent.SetRemoteCredentials(remoteUfrag, remotePwd)

      // Add remote candidates
      err = agent.AddRemoteCandidate(remoteCandidate)

      // Get connection
      conn, err := agent.Dial(context.Background(), remoteUfrag, remotePwd)
      ```

      <Note>
        See the [quickstart guide](/quickstart) for a complete working example with signaling.
      </Note>
    </Step>
  </Steps>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <h2 className="text-2xl sm:text-3xl font-semibold text-gray-900 dark:text-white mb-4">
    Explore the library
  </h2>

  <p className="text-base text-gray-600 dark:text-gray-400 mb-8">
    Learn about core concepts and advanced features
  </p>

  <CardGroup cols={2}>
    <Card title="ICE Protocol" icon="network-wired" href="/concepts/ice-protocol">
      Understand the fundamentals of Interactive Connectivity Establishment
    </Card>

    <Card title="Agents" icon="robot" href="/concepts/agents">
      Learn how ICE agents manage connectivity establishment
    </Card>

    <Card title="Candidates" icon="list" href="/concepts/candidates">
      Explore different candidate types and their priorities
    </Card>

    <Card title="NAT Traversal" icon="route" href="/guides/nat-traversal">
      Master techniques for traversing NAT and firewalls
    </Card>

    <Card title="Configuration" icon="sliders" href="/guides/configuration">
      Customize agent behavior with configuration options
    </Card>

    <Card title="Multiplexing" icon="shuffle" href="/guides/multiplexing">
      Share ports across multiple ICE sessions
    </Card>
  </CardGroup>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <h2 className="text-2xl sm:text-3xl font-semibold text-gray-900 dark:text-white mb-4">
    Key features
  </h2>

  <p className="text-base text-gray-600 dark:text-gray-400 mb-8">
    Production-ready ICE implementation with comprehensive feature support
  </p>

  <div className="grid md:grid-cols-2 gap-6">
    <div className="p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27]">
      <div className="flex items-start gap-4">
        <div className="flex-shrink-0 w-10 h-10 rounded-lg bg-[#e23d37]/10 dark:bg-[#e23d37]/20 flex items-center justify-center">
          <svg className="w-5 h-5 text-[#e23d37]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
          </svg>
        </div>

        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">RFC 5245 Compliant</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400">Full implementation of the ICE protocol specification</p>
        </div>
      </div>
    </div>

    <div className="p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27]">
      <div className="flex items-start gap-4">
        <div className="flex-shrink-0 w-10 h-10 rounded-lg bg-[#e23d37]/10 dark:bg-[#e23d37]/20 flex items-center justify-center">
          <svg className="w-5 h-5 text-[#e23d37]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
          </svg>
        </div>

        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">UDP & TCP Support</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400">Works with both UDP and TCP transport protocols</p>
        </div>
      </div>
    </div>

    <div className="p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27]">
      <div className="flex items-start gap-4">
        <div className="flex-shrink-0 w-10 h-10 rounded-lg bg-[#e23d37]/10 dark:bg-[#e23d37]/20 flex items-center justify-center">
          <svg className="w-5 h-5 text-[#e23d37]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4" />
          </svg>
        </div>

        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">STUN & TURN</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400">Integrated support for STUN and TURN servers</p>
        </div>
      </div>
    </div>

    <div className="p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27]">
      <div className="flex items-start gap-4">
        <div className="flex-shrink-0 w-10 h-10 rounded-lg bg-[#e23d37]/10 dark:bg-[#e23d37]/20 flex items-center justify-center">
          <svg className="w-5 h-5 text-[#e23d37]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
          </svg>
        </div>

        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">mDNS Discovery</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400">Local network discovery without external servers</p>
        </div>
      </div>
    </div>
  </div>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <h2 className="text-2xl sm:text-3xl font-semibold text-gray-900 dark:text-white mb-4">
    Resources
  </h2>

  <p className="text-base text-gray-600 dark:text-gray-400 mb-8">
    Join the Pion community and get help
  </p>

  <div className="grid sm:grid-cols-2 gap-4">
    <a href="https://github.com/pion/ice" className="group block p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27] hover:border-[#e23d37] dark:hover:border-[#e23d37] transition-colors no-underline">
      <div className="flex items-start justify-between">
        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">GitHub Repository</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400 mb-3">View source code, report issues, and contribute</p>

          <span className="text-sm text-[#e23d37] group-hover:text-[#c12f2a]">
            Visit GitHub →
          </span>
        </div>

        <svg className="w-5 h-5 text-gray-400" fill="currentColor" viewBox="0 0 24 24">
          <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
        </svg>
      </div>
    </a>

    <a href="https://discord.gg/PngbdqpFbt" className="group block p-6 rounded-lg border border-gray-200 dark:border-[#27272a] bg-white dark:bg-[#1a1d27] hover:border-[#e23d37] dark:hover:border-[#e23d37] transition-colors no-underline">
      <div className="flex items-start justify-between">
        <div>
          <h3 className="text-base font-semibold text-gray-900 dark:text-white mb-2">Discord Community</h3>
          <p className="text-sm text-gray-600 dark:text-gray-400 mb-3">Get support and connect with other developers</p>

          <span className="text-sm text-[#e23d37] group-hover:text-[#c12f2a]">
            Join Discord →
          </span>
        </div>

        <svg className="w-5 h-5 text-gray-400" fill="currentColor" viewBox="0 0 24 24">
          <path d="M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" />
        </svg>
      </div>
    </a>
  </div>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <div className="rounded-2xl bg-gradient-to-br from-[#e23d37] to-[#c12f2a] dark:from-[#1a1d27] dark:to-[#0f1117] p-8 sm:p-12 border border-[#e23d37]/20 dark:border-[#27272a]">
    <div className="max-w-2xl">
      <h2 className="text-2xl sm:text-3xl font-semibold text-white dark:text-white mb-4">
        Ready to get started?
      </h2>

      <p className="text-base text-white/90 dark:text-gray-400 mb-6">
        Follow our quickstart guide to establish your first peer-to-peer connection with Pion ICE
      </p>

      <a href="/quickstart" className="inline-flex items-center px-6 py-3 rounded-lg bg-white text-[#e23d37] font-semibold hover:bg-gray-100 transition-colors no-underline">
        View Quickstart
      </a>
    </div>
  </div>
</div>
