Although the <strong>Frames Protocol</strong><em>could</em> be used outside of <strong>Farcaster</strong>, at the time of writing, <strong>Farcaster</strong> clients (such as <strong>Warpcast</strong>) are the only major (client-side) platform to support it.
(The server-side of the <strong>Frames Protocol</strong>, which is called a <strong>Frame Server</strong>, is an just HTTP resource — which some might loosely call an HTTP (or HTTP) URL.)
Before we get into the <strong>Frames Protocol</strong> let's quickly go over <strong>Farcaster</strong> — since the <strong>Frames Protocol</strong> originated with <strong>Farcaster</strong>.
</p>
<p>
<strong>Farcaster</strong> is a decentralized social-media network — and is similar in many ways to other decentralized social-media networks, such as
the <strong>Fediverse</strong> (which includes Mastodon, Pleroma, Pixelfed, PeerTube, Misskey, Lemmy, Kbin, GreatApe, Akkoma, etc),
and
<strong>Bluesky</strong>.
</p>
<p>
And in particular, <strong>Farcaster</strong> is a <strong>micro-blogging</strong> social-media network platform.
</p>
<p>
The most famous <strong>micro-blogging</strong> social-media network platform is <strong>Twitter.</strong>.
But the <strong>Fediverse</strong>'s <strong>Mastodon</strong>, <strong>Akkoma</strong>, <strong>Misskey</strong>, <strong>Pleroma</strong> and others are also <strong>micro-blogging</strong> social-media network platforms.
And so too is <strong>Bluesky</strong>.
</p>
<p>
All of these (including <strong>Farcaster</strong>) are similar to <strong>Twitter.</strong>.
Although typically, <abbrtitle="HyperText Markup Language">HTML</abbr> comes as a whole page (rather than a fragment), and thus usually looks more like this:
If you look at the old <abbrtitle="HyperText Markup Language">HTML</abbr> 2.0 specification (i.e., <ahref="https://datatracker.ietf.org/doc/html/rfc1866">IETC RFC-1866</a> in <ahref="https://datatracker.ietf.org/doc/html/rfc1866#section-5.2.5">section 5.2.5.</a>), which was created back in the 1990s, you can see how the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element was defined back then.
When creating a <strong>Frames Protocol</strong> application, you can effectively ignore almost all of <abbrtitle="HyperText Markup Language">HTML</abbr> except for one <abbrtitle="HyperText Markup Language">HTML</abbr> element — the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element.
The <strong>Frames Protocol</strong> only uses the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element.
And it (the <strong>Frames Protocol</strong>) uses the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element in a very particular way.
The <strong>Frames Protocol</strong> usage of the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element takes inspiration from the <ahref="https://ogp.me/">OpenGraph</a> protocol.
Since there is a lot of <abbrtitle="HyperText Markup Language">HTML</abbr> code there, let's just focus on the <ahref="https://ogp.me/">OpenGraph</a> part of it:
The "<code>og</code>" part (in "<code>og:title</code>", "<code>og:type</code>", "<code>og:image</code>", and "<code>og:url</code>") is short for "OpenGraph".
And thus all these <ahref="https://ogp.me/">OpenGraph</a> names are namespaced.
The <strong>Frames Protocol</strong> defines its own list of name-value pairs also using the <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> element, similar to <ahref="https://ogp.me/">OpenGraph</a>.
</p>
<p>
When creating a <strong>Frames Protocol</strong> application, you <strong>MUST</strong> include these:
</p>
<ul>
<li><code>fc:frame</code></li>
<li><code>fc:frame:image</code></li>
<li><code>og:image</code></li>
</ul>
<p>
(Note that the last required name is from <ahref="https://ogp.me/">OpenGraph</a>!
Where the first two have been created by the <strong>Frames Protocol</strong>.)
</p>
<p>
Here is an example of these in <abbrtitle="HyperText Markup Language">HTML</abbr><code><meta></code> elements: