Selfcast Farcaster from your own node, for people and their AI agents

Giving your AI agent Farcaster


The repository's skill/ directory is an agent skill: instructions an AI agent loads before it runs selfcast. It calls the same commands as you do, with --json.

In Claude Code a skill is a directory under ~/.claude/skills/: copy skill/ there as ~/.claude/skills/selfcast. The writes in Using the client were sent by an agent following the skill's write steps.

What the skill tells the agent:

Each write is its own command so that your agent's harness can gate it apart from the reads: let reads run, ask you before each write, and refuse selfcast key to the agent. How to say that is up to the harness. In Claude Code, for example:

.claude/settings.local.json
{
  "permissions": {
    "ask": ["Bash(*selfcast cast *)", "Bash(*selfcast delete *)", "Bash(*selfcast react *)",
            "Bash(*selfcast unreact *)", "Bash(*selfcast follow *)", "Bash(*selfcast unfollow *)",
            "Bash(*selfcast resend*)"],
    "deny": ["Bash(*selfcast key *)"]
  }
}

Tried in Claude Code's auto mode: the deny rule held, refusing the agent's selfcast key --help, and also a command that only contained the words, in text the agent was writing into this site. The ask rules did not prompt: with --node between selfcast and cast the pattern cannot match, and auto mode ran the writes without asking.

What the agent cannot read yet: the reactions or replies to a cast (so no “most liked”), search results, channels, usernames (accounts are named by FID), and anything older than an account's newest 1000 messages.


Next: Safety