npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cranberrry

v0.1.8

Published

AI Agentic UI Framework For Frontend

Downloads

11

Readme

Cranberrry: AI Agentic State Management Framework 🤖

Cranberrry is a modern, type-safe, redux-inspired state management library for building robust AI agentic flows in frontend SaaS applications. It is framework-agnostic, React-independent, and designed for extensibility and ease of use.

This guide will help you to integrate cranberrry and run your first agent with just a few lines of code in your React application. Cranberrry is fairly customisable and you can hook it up with any particular UI of your choice whether it's custom UI or shadcn ui library. We give you pre-implemented complex logical skeletons to run your AI Agents in your React application so you can hook up any UI of your choice to it.

🚀 Installation

Choose your desired package manager to install cranberrry in your React application:

📦 npm

npm install cranberrry

🧶 yarn

yarn add cranberrry

⚡ pnpm

pnpm install cranberrry

🎯 Quick Start

1️⃣ Initialize AI Agents

To initialize AI Agents you need to use CBAgent interface to start defining your Agents.

import type { CBAgent } from "cranberrry"

const orion: CBAgent = {
  id: "orion",
  name: "Orion",
  description: "A helpful assistant that can answer questions and help with tasks",
  face: "https://i.imgur.com/1234567890.png",
  designation: "Assistant",
  introduction: "I am a helpful assistant that can answer questions and help with tasks",
  isActive: true,
  isAvailable: true,
  isBusy: false
}

2️⃣ Export Your Defined AI Agents

To export your defined AI Agents you need to use CBAgent[] interface to start defining your Agents.

import type { CBAgent } from "cranberrry"

const agents: CBAgent[] = [orion] // add many more

export default agents;

3️⃣ Initialize Agents Store

Initialize agents store using createCBStore to supply all the AI agents that we have defined previously in agent.ts file to our frontend React application.

import { createCBStore, CBAgentReducer, type CBState } from "cranberrry";
import agents from "./agents";

const initialState: CBState = {
  agents: agents,
  tasks: [],
}

const agentStore = createCBStore(CBAgentReducer, initialState)  

export default agentStore

4️⃣ Wrap It Up With Provider

Wrap your main.tsx or app.tsx or entry file with CranberrryProvider to supply the agentStore to your application.

import App from './App.tsx'
import { CranberrryProvider } from 'cranberrry'
import agentStore from './agentStore.ts'

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <CranberrryProvider store={agentStore}>
      <App />
    </CranberrryProvider>
  </StrictMode>,
)

✨ Features

  • 🔧 Centralized, type-safe state for AI agents and their tasks

  • 🔄 Redux-like API: createStore, dispatch, subscribe, getState

  • 🤖 Agent Management: Easy initialization and management of AI agents

  • 📋 Task Management: Handle agent tasks with built-in state management

  • 🧩 Modular Architecture: Extensible and robust design

  • 🛡️ Type Safety: Full TypeScript support with comprehensive type definitions

📚 Documentation

Full documentation is available in the Cranberrry with:

  • 📦 Installation (npm, yarn, pnpm)
  • 🎮 Playground (try out agent/task management)
  • 📖 API Reference (types, store, hooks)
  • Features (agent/task management, hooks, supervisor, etc.)

🎮 Playground

Try the playground in the documentation app to experiment with agents and tasks interactively.

🐛 Bug Report

If you encounter any bugs or issues, please report them on our GitHub Issues page.

When reporting a bug, please include:

  • A clear description of the issue
  • Steps to reproduce the problem
  • Expected vs actual behavior
  • Version of cranberrry you're using
  • Your environment details (Node.js version, React version, etc.)

We appreciate your feedback and contributions to make cranberrry better!

📄 License

ISC