The folks at Coda (specifically Eric Koleda) have intimated in another forum about the future of Packs:l
“…to extend the Packs platform…”
I have a tough time understanding how the Pack architecture could be agentic. How will it have the power and performance necessary to embrace large contexts, long-term memory requirements, and asynchronous/event-based communications? Packs seem deeply sandboxed and unsuitable as a framework for agentic development, the way LangGraph and Mastro work. If Grammarly needs to call an agent, how would a Pack-notable for its inability to support external communications-provide an agentic interface?
So, I did some thinking and research.
Clarifying Packs’ Current Capabilities and Limitations
Packs are essentially serverless JavaScript/TypeScript extensions that run on Coda’s infrastructure. They enhance docs by adding formulas, actions (for buttons/automations), sync tables (for pulling external data), and column formats. Key points relevant to my doubts:
-
Sandboxing: Yes, Packs are isolated for security—they don’t have unrestricted access to a doc’s full data. Users must explicitly pass parameters (e.g., via formulas or actions), and Packs declare their capabilities upfront (e.g., network access). This prevents rogue behavior but doesn’t inherently block agentic features; Coda could extend permissions for approved agent workflows.
-
External Communications: This seems like a misunderstanding. Packs do support external interactions via HTTP requests, OAuth authentication, and API calls. For example, the Google Calendar Pack pulls events from Google’s API, and the Slack Pack sends messages. They’re not “unable” to communicate externally; they’re designed for it, as long as it’s declared in the Pack’s code. If Grammarly (which has a Coda integration via widget and potentially Pack-like features) needs to “call an agent,” the agent could use these same mechanisms to interface with Grammarly’s API. But can a pack serve as an endpoint? I’m still fuzzy on this.
-
Power and Performance: Packs executions are capped at ~1 minute to prevent abuse, but Coda already supports async patterns (e.g., for sync tables that poll data over time). Large-scale processing happens on Coda’s servers, not client-side, so scalability is handled by their backend.
-
Contexts and Memory: Current Packs don’t natively handle “large contexts” (e.g., processing massive doc data) or persistent memory beyond simple caching. Formulas/actions are stateless by default. However, Coda docs themselves provide database-like tables for storage, and Packs can interact with them indirectly.
These aren’t insurmountable for agents—agents being autonomous systems that reason, plan, use tools, and remember across interactions. Frameworks like LangGraph (which builds graph-based workflows with LangChain) or Maestro (e.g., see CrewAI’s orchestration) are general-purpose, but Coda could adapt Packs by layering agent-specific features on top.
How Packs Could Evolve into an Agentic Framework
Based on the quote from Eric Koleda (“extend the Packs platform to be the way to build agentic functionality… upgrade existing Packs to become agents”), this isn’t about forcing Packs into something they’re not—it’s about augmenting them. Coda already has “Coda AI” (built-in LLM features for summarization, generation, etc.), so they have the AI backbone. Here’s a plausible path for making Packs agentic, addressing specific requirements:
-
Defining Agents in Packs:
- Packs could add a new building block: “Agent definitions.” Similar to how you define formulas or actions today, you’d script an agent’s behavior (e.g., prompts, tools, decision logic) in JS/TS.
- Example: A Pack could expose an “Agent” as a doc element—like a button that triggers an agent workflow or a table that logs agent interactions.
- Upgrade path: Existing Packs (e.g., Grammarly for advanced text analysis) could add agent layers without rewriting everything. The Pack’s core tools (e.g., API calls) become the agent’s “tools,” and Coda’s AI handles the reasoning loop.
-
Handling Large Contexts:
- Coda’s backend could integrate with high-capacity LLMs (e.g., via partnerships like OpenAI, which already has a Coda Pack). Agents wouldn’t process “large contexts” in one go; they’d use techniques like chunking, summarization, or RAG (Retrieval-Augmented Generation) over the doc.
- In a doc, the agent pulls relevant data (e.g., from tables) on-demand, approved by the user. This avoids overwhelming the sandbox—context is built iteratively, not loaded wholesale.
-
Long-Term Memory:
- Use Coda’s native tables/databases as memory storage. An agent Pack could write/read from a “memory table” in the doc, persisting state across sessions.
- For example: An agent analyzing Grammarly suggestions could store user preferences or past corrections in a table, querying it for future runs. This is “long-term” without needing external databases, and it’s secure within the doc’s permissions.
-
Power, Performance, and Loops:
- Agentic loops (e.g., plan-act-observe) could run on Coda’s servers with extended timeouts or async chaining (building on current sync table mechanics).
- Performance: Coda hosts everything, so they can optimize for scale (e.g., parallel executions). Unlike local frameworks, this offloads compute to their cloud, similar to how Vercel or Replit host agent demos.
-
Grammarly Example (or Similar Integrations):
- If Grammarly needs to “call an agent,” the upgraded Pack could define the agent as an intermediary: The Pack provides tools (e.g., HTTP to Grammarly’s API for checks), and the agent reasons over them (e.g., “Analyze this text, suggest edits, confirm with user, apply changes”).
- Interface: In a doc, this appears as an “Agent button” or automation. External comms happen via the Pack’s existing HTTP capabilities—no need to break the sandbox, as it’s all routed through declared APIs.
This isn’t hypothetical; Coda’s ecosystem already supports AI Packs (e.g., OpenAI for GPT/DALL-E in docs), so extending to agents is a natural step. It’s like turning Packs into “tool providers” for Coda AI’s agent runtime.
Why This Is a Doable (and Good) Strategy
Coda isn’t trying to compete with general frameworks like LangGraph (for arbitrary agent graphs) or Maestro (for multi-agent orchestration)—they’re focusing on Coda-specific agents that live in docs (Shishire said exactly this in the Twist video). Here’s why it’s feasible and advantageous:
-
Doability:
- Technical Fit: Packs are already modular and extensible. Coda controls the platform, so they can add agent primitives (e.g., LLM calls, memory APIs) without breaking backward compatibility. Upgrades could be opt-in, like adding an “agent: true” flag to a Pack.
- Security via Sandbox: Rather than a weakness, this is a strength—agents would require explicit user consents (e.g., “Allow this agent to access table X”), preventing hallucinations or data leaks. External comms stay controlled.
- Performance Scaling: Coda’s serverless model can handle agent loops via batching/async, and large contexts/memory via doc integration. They’ve managed similar for Coda AI features.
- Timeline: The quote notes “still working on details,” so expect iterative rollouts (e.g., beta with simple agents, then full upgrades).
-
Why It’s a Good Strategy:
- Leverages Existing Ecosystem: Thousands of Packs exist (e.g., Jira, Slack, Google). Upgrading them to agents means instant value—e.g., a Jira Pack becomes an agent that not only syncs issues but prioritizes them autonomously. No need for devs to learn a new framework.
- Integrated with Workflows: Agents in Packs would embed directly in docs, where teams already collaborate. This beats standalone tools: Memory in tables, contexts from doc data, actions as buttons/automations.
- User-Friendly for Coda Users: Devs familiar with Packs (simple JS) can build agents without mastering LangGraph’s complexity. For non-devs, it’s “stackable” with Coda’s no-code elements.
- Security and Compliance: Sandboxing ensures agents are safer than open frameworks, ideal for enterprise (e.g., no accidental API exposures).
- Business Angle: Unifies Coda’s product line (docs + AI + integrations), reducing tool sprawl. It’s “agentic” where it matters—in collaborative docs—without overpromising full autonomy.
Aspect | Current Packs Limitation | Agentic Extension (Plausible) | Benefit Over LangGraph/Maestro |
---|---|---|---|
Sandboxing | Restricted data access | User-approved doc scopes for agents | Safer; integrated with Coda permissions |
External Comms | HTTP/API only (declared) | Agents use Pack tools for calls | Seamless; no extra setup needed |
Large Contexts | Stateless formulas | LLM chunking + doc RAG | Doc-native; handles Coda-scale data |
Long-Term Memory | None (or cache) | Store in Coda tables | Persistent, queryable in docs |
Performance | 1-min cap | Async loops on Coda servers | Scalable; no local resource drain |
Grammarly-Like Use | Basic API calls | Agent reasons over API results | Upgrades integration to proactive |
In short, this strategy plays to Coda’s strengths: A secure, integrated platform where agents enhance docs without reinventing the wheel. It’s doable because Coda owns the stack and can iterate safely. If it feels mismatched now, it’s likely because details are pending—watch for announcements in their community or blog.
Circling back to this observation:
they’re focusing on Coda-specific agents that live in docs
I am doing all of this in Coda with Mastro. Coda is an ideal orchestrator.