# Understand node types in IPFS Companion

IPFS Companion's preferences screen allows you to choose from several different node types. The available types you'll see in your Companion preferences depends on the browser you're using (i.e. Firefox, Chrome, Brave), but the full list is as follows:

Screenshot of node type selector in Companion preferences

If you're already running a local IPFS node, choose External. If not, do one of the following:

# External

An external node can be any instance of an IPFS daemon that:

  • Runs outside of your web browser.
  • Exposes a gateway and writeable API over HTTP at TCP ports.

The go-ipfs (opens new window) implementation of IPFS is the recommended choice for running an external IPFS node. It's less power-hungry than other implementations and uses the dhtclient mode to decrease ambient bandwidth use and reduce battery drain.

A good practice is to run your go-ipfs daemon on localhost (127.0.0.1), as it provides:

  • Increased security: native IPFS used as end-to-end transport.
  • Better UX in the browser: no mixed-content warnings.
  • Improved performance: local loopback is used, so no network overhead.

You can get started with running a go-ipfs node on your local machine in several ways:

# Native

# Provided by Brave

Users of the Brave (opens new window) browser (v1.19 or later) can enable native support for IPFS using a go-ipfs node built directly into the browser itself. This is a great way to experiment with IPFS without having to install or run IPFS Desktop or the command-line daemon.

This node type offers the same benefits as an external node, with additional features provided within Brave itself:

  • Native support for ipfs:// and ipns:// URIs:
    • Built-in fallback to a public gateway.
    • Ability to change your preferred public gateway from Brave's settings page.
    • Options for default resolution of IPFS resources: through a public gateway, through a local node, or asking each time.
  • The IPFS node is managed by Brave itself:
    • Automatic go-ipfs updates and migrations.
    • Your node is only running when Brave is open.
    • You can start/stop your Brave-based node by clicking the power button icon in IPFS Companion's main menu.

TOOLS FOR BRAVE USERS

  • ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
    Popular URI for triggering and testing native IPFS support
  • brave://settings/extensions
    One-click Companion install and URI resolution settings
  • brave://ipfs
    Status page for Brave's built-in go-ipfs node

# Embedded

An embedded node is a js-ipfs instance running in the browser in-memory, without the need for any external software.

WARNING

This node type is only for development and experimentation. Most users should use external or native node types instead.

Power users can provide custom config (opens new window) (e.g. to enable experimental pubsub) via the IPFS Companion Preferences (opens new window)

Please note that there are some limitations when running an embedded js-ipfs instance in the browser context using Companion:

# Embedded + chrome.sockets (deprecated)

WARNING

This node type has been deprecated and is no longer supported by Chromium browsers. While this option still appears in IPFS Companion preferences, users of this node type are strongly urged to migrate to a different node type.

# Public

A public node is used as a fallback for gateway functionality when an external node is offline or an embedded node is used. It does not expose the API port. This type of node is not included as an option in Companion's preferences.