def list_components(self):
        """List all of the registered component names.

        This list will include all of the permanently stored components as
        well as any temporary components that were added with a temporary=True
        flag in this session.

        Returns:
            list of str: The list of component names.

            Any of these names can be passed to get_component as is to get the
            corresponding IOTile object.
        """

        overlays = list(self._component_overlays)
        items = self.kvstore.get_all()

        return overlays + [x[0] for x in items if not x[0].startswith('config:')]