Features
One Tool for Every List You'll Ever Run Again
Packed separates the template from the execution. A master list is the reusable blueprint — items, containers, weights, tags, all in place. A list instance is the working copy: stamp it out, check things off, track progress, share a link, archive when done. The master list stays pristine and ready for the next trip, move, launch, or sprint. Real-time SSE keeps every collaborator in sync without a reload. 44 MCP tools let Claude Code drive the whole thing from the command line.
Master Lists
Templates That Never Get Checked Off
Master List Templates
A master list is the canonical, always-intact blueprint for any recurring routine — camping gear, travel packing, product launch checklist, sprint rituals, onboarding runbooks. Items, containers, weights, and tags live here. You never touch a master list to check things off. You stamp out an instance instead.
Nested Containers
Organize items into collapsible groups nested up to three levels deep. Group camping gear into
Kitchen›Cooking›Tools, or a sprint checklist intoLaunch Day›Infrastructure›DNS. Each container can be expanded or collapsed independently.Item Detail
Every item carries a name, optional long-form description, weight (in pounds or kilograms — per-user preference), category, and one or more color-coded tags. Weight rolls up per container and per list so you always know total pack weight before you leave.
Full-Text Search
Global search across master lists, instances, and items in a single query. Results are categorized — master lists, active instances, archived instances, items — so you can jump straight to the relevant context. Search hits highlight matched terms.
Export
Export any master list or instance as JSON with one call:
GET /api/master-lists/{id}/export-fullorGET /api/list-instances/{id}/export. Useful for archival, migration into other tools, or feeding data downstream into scripts and automations.
List Instances
Working Copies, Progress Tracked
Generate Instance
One click on
Generate Instance— or one MCP call togenerate_instance— stamps out a fresh working copy of any master list. The instance gets its own name, inherits all items and containers, and starts at 0% complete. The master list is unchanged.Check & Uncheck Items
Check or uncheck any item in an instance with an optimistic UI update — the UI responds instantly; the server confirms asynchronously. Progress bars on the dashboard show completion percentage per instance in real-time.
Bulk Update
The
bulk_update_itemsendpoint accepts an array of item operations in a single request. Mark a whole container done in one API call, uncheck an entire section for a re-run, or update multiple weights at once without round-tripping per item.Archive & Restore
Archive a completed instance to get it off the dashboard without deleting it. Archived instances live in their own view and can be unarchived at any time. Useful for keeping a history of every camping trip, sprint, or product launch without clutter.
Dashboard Progress View
The root dashboard displays all active instances as cards with per-item progress bars, a 3-dot context menu for edit / archive / delete, and last-updated timestamps. Archived instances are one click away in the
/archivedroute.
Tags & Organization
Color-Coded, Queryable, Yours
Color-Coded Tags
Create tags with any hex color via the built-in color picker. Apply multiple tags to any item in both master lists and instances. Tags are user-scoped, so each member of your team maintains their own label taxonomy.
Multi-Tag Item Assignment
The item form supports multi-select tag assignment. Tag a camping item with both
ClothingandCold Weather; tag a task withBlockingandEngineering. Filter views by tag to see only what matters to a given packing sub-goal.Tag Management Page
The
/tagspage lists every tag, shows item counts per tag, and lets you rename, recolor, or delete tags in place. Deleting a tag removes it from all items — the items remain, just untagged.
Collaboration
Share a Link. No Account Required.
Token-Based Collaborator Invites
Invite a collaborator by email. Packed generates a unique token and sends an access link. The collaborator opens the link — no account, no login required — and can view and check items on the shared instance immediately via
GET /api/shared/{token}.Collaborator Check Access
Via the shared link, a collaborator can toggle item check status with
PATCH /api/shared/{token}/items/{id}. Their check is attributed to their name in the activity log. Item CRUD (create / update / delete) is reserved for authenticated owners.Activity Log
Every check and uncheck on a shared instance is logged with who did it and when. The
/api/collaborators/list/{id}/activityendpoint returns the full history. Useful for accountability on distributed teams: you know exactly who packed the bear canister.SSE Live Updates
Open a list and every other connected participant — owner or collaborator — sees item state changes propagate in real-time via Server-Sent Events at
/api/lists/{id}/events. No polling, no manual refresh. The progress bar ticks up the moment a collaborator checks an item.Collaborator Management
List active collaborators, remove access at any time, and audit the activity log — all from the list detail view or via the MCP tools
list_collaborators,remove_collaborator, andget_collaborator_activity.
Template Library
Start From Something Good
Built-In Template Library
Packed ships a curated library of pre-built list templates organized by category — travel, camping, home, software launches, team rituals, and more. Browse via
GET /api/templates, list library categories vialist_library_categories, and stamp out a starting-point master list with one call.Create from Template
Instantiate any built-in template as a fresh master list via
POST /api/templates/{id}/createor the MCP toolcreate_from_template. The new master list lands in your account fully editable — rename it, add containers, adjust items, and then generate instances as you would from any list you built yourself.Slate Integration
Push any master list directly to Slate — Renkara’s daily task tracker — via
POST /api/master-lists/{id}/send-to-slate. Store your Slate API key and URL in your Packed profile once; after that, each send is a single call. Useful for converting a launch checklist or sprint ritual into today’s Slate task list.
AI & MCP
44 Tools for Claude Code
Full MCP Tool Surface
44 MCP tools cover every Packed capability: master list CRUD, instance generation, item check & bulk update, container CRUD, tag management, full-text search, template library browsing, collaborator management, shared list access, Slate send, export, suggestions, and diagnostics. Register the MCP server with Claude Code and drive Packed entirely from the command line.
AI Suggestions
The suggestions system surfaces recommended items for a given list context. Retrieve suggestions via
get_suggestions, accept one to add it to the list automatically viaaccept_suggestion, or dismiss it withdismiss_suggestion. Useful when starting a new list type and you don’t want to start from a blank template.Diagnostics & Health
check_service_healthreturns the backend’s current health status.get_diagnosticsreturns deeper runtime information — database connectivity, Valkey reachability, SSE subscriber count, and queue depth. Both are available as MCP tools and as REST endpoints atGET /health.
Accessibility
Built for Everyone
WCAG 2.1 AA Compliance
4.5:1 contrast for body text, 3:1 for large text and UI components, in both light and dark themes.
Keyboard Navigation
Every interaction reachable via keyboard. Logical tab order, visible focus indicators, Escape-to-dismiss for modals.
Screen Reader Support
VoiceOver, NVDA, and JAWS tested. Semantic HTML, ARIA labels, live regions for dynamic updates.
Reduced Motion
Respects
prefers-reduced-motion. Usable at 200% zoom. Touch targets meet 44x44 minimum.
How It Works
Template, Stamp, Execute, Archive
Step 1: Build the Master List
Define the reusable blueprint once — items, containers up to three levels deep, weights, tags, and descriptions. The master list never gets checked off; it’s the source of truth you refine after every run.
Step 2: Generate an Instance
When you’re ready to execute, stamp out a working copy in one click or one MCP call. The instance inherits the full structure of the master list and starts at 0% complete. Name it for the occasion — “Yosemite June 2026” or “v3.2 Launch.”
Step 3: Execute & Collaborate
Check items off as you go. Share a token-based link with collaborators — no account required. SSE streams every check to all open tabs in real-time. The activity log tracks who did what and when.
Step 4: Archive & Improve
When the trip is done or the launch is shipped, archive the instance. Review the activity log, update the master list to fix anything you missed, and the next instance starts even better.
Technical Specifications
Under the Hood
Backend
- FastAPI (Python 3.12+)
- SQLAlchemy 2.0 async + asyncpg
- PostgreSQL (shared RDS, dedicated
packedschema) - Valkey 8 cache (key prefix
pk:, port 6380) - Alembic async migrations
- Server-Sent Events (SSE) for real-time list updates
- mTLS (production via renkara-tools-alb) + OIDC RS256 JWT + API key auth
Frontend
- React 19 + TypeScript + Vite
- @avian/design-system tokens, components, and Tailwind preset
- @avian/auth-react 0.1.4 (OIDC via auth.renkara.com)
- React Context + hooks (no Redux)
- Optimistic UI updates on item check / uncheck
- Light and dark mode
- WCAG 2.1 AA — keyboard nav, screen reader support, reduced motion
MCP & Integration
- 44 MCP tools via stdio bridge
- Slate integration — push any master list to daily tasks
- Token-based collaborator sharing (no-auth access)
- Full JSON export for master lists and instances
- Built-in template library with category browsing
- AI-powered item suggestions via
get_suggestions
Data Model
- Tables: users, master_lists, list_instances, containers, items, tags, item_tags, collaborators, activity_logs
- Items carry name, description, weight (lb/kg), category, and tags
- Containers nest up to 3 levels; weight rolls up per container
- UUID primary keys throughout; async operations via asyncpg
- Activity log attributes every collaborator check by identity and timestamp
Infrastructure
- Frontend:
https://packed.renkara.com(S3 + CloudFront) - Backend:
https://packed-api.renkara.com(ALB → EC2) - CI/CD: CodePipeline auto-builds and deploys on push to
main - Frontend port 3407, backend port 3417 (local dev)
- Docker Compose for local full-stack development
- Frontend:
Development
100% Built by Claude
Every tool in the Renkara fleet was built by Claude (Anthropic) working alongside a single human supervisor. Every line of code, every test, every deployment: AI-authored with human direction. The leverage factor across the fleet runs in the 20x–50x range, with individual sessions regularly exceeding 100x.
See the daily leverage records for per-task numbers across the full build history.