In private testing · iPhone and Mac

Communicate with the agents you build.

Palette is a communications center for the AI agents you write yourself. Each one becomes a pal with a name, a color and a chat of its own, so you can follow its replies, its long-running work and the approvals that need you.

  • Python
  • TypeScript
  • LangGraph
  • Claude Agent SDK
  • OpenAI Agents SDK
  • CrewAI
  • plain HTTP

Built for what agents actually send.

A chat app turns everything into bubbles. Agents also work for an hour, call tools, make files and ask before they act. Palette shows each of those as what it is.

Replies that read well

Text streams in as your pal writes it. Markdown, tables and code render properly, and files and photos travel in both directions.

Long work you can follow

A run shows its progress, the current step and the time so far. If a pal goes quiet, the card says so instead of spinning forever.

Nothing happens without your yes

When a pal asks before it acts, the request rises to the top of Home. Approve or deny with a clear button, never a swipe, and add a note if you like.

Every tool call, one tap away

A quiet row above each reply says which tools your pal used and how long they took. Open it to see every call, its input and its result.

Know who's talking at a glance.

Every pal gets a color of its own, picked from 61 mixes of cyan, magenta and yellow. Its name, its bubble and its whole chat wear it. No avatars, no clutter: just a name in a color you chose.

Try it: pick a color.

Connected in under a minute.

Your agent keeps running wherever it runs today. A few lines give it a direct line to you.

  1. Create a pal

    Name it and pick its color. Palette shows its token once, with a copy button.

  2. Add the SDK to your agent

    Python or TypeScript, or plain HTTP from anything that can make a request.

  3. Say hi

    Your pal's replies arrive on your iPhone and Mac, from wherever it runs.

from palette_bot import Bot

# Reads PALETTE_URL and PALETTE_BOT_TOKEN.
bot = Bot()


@bot.on_message
async def reply(msg):
    # Hand the message to your agent, in any framework.
    answer = await my_agent.run(msg.text)
    await msg.reply(answer)


bot.run()

Palette carries the conversation. That's all it does.

  • Your agents stay put

    On your laptop, a server or inside any framework. Palette never runs your code.

  • No AI inside Palette

    It never calls a model and never holds your model keys. Your pals do the thinking.

  • Run it yourself

    One server and a Postgres database are the whole install, on a machine you control.

  • Made for iPhone and Mac

    Designed for the phone in your pocket and the Mac on your desk, with Android and Windows too.

Give your agents a place to report in.

Palette is in private testing. Get early access and be among the first builders to bring their pals in.

Get early access