   """
   def ping client_id do
     GenServer.cast via(client_id), :ping
+  end
+
+  @doc """
+  Store arbitrary metadata about a client
+  """
+  def set_meta client_id, metadata do
+    GenServer.call via(client_id), {:set_meta, metadata}
+  end
+
+  @doc """
+  Retrieve metadata about a client
+  """
+  def get_meta client_id do
+    GenServer.call via(client_id), :get_meta
   end
 
   @doc """

      nil ->
        Pixie.Backend.queue_for client_id, messages
      pid ->
        Pixie.Transport.enqueue pid, messages
    end
    :ok

    {:ok, transport} = Pixie.TransportSupervisor.replace_child transport_name, id
    do_set_transport id, transport, transport_name
    {:reply, transport, %{state | transport_name: transport_name}, idle_timeout}
  end

  def handle_call({:set_meta, metadata}, _from, state) do
    {:reply, :ok, %{state | metadata: metadata}}
  end

  def handle_call(:get_meta, _from, %{metadata: metadata}=state) do
    {:reply, metadata, state}
  end

  @doc """
