{"id":42201361,"url":"https://github.com/zot/frictionless","last_synced_at":"2026-04-12T22:29:31.731Z","repository":{"id":334606202,"uuid":"1121845792","full_name":"zot/frictionless","owner":"zot","description":"You and Claude using apps together. Evolving them while they run. Making. Sharing. Downloading.","archived":false,"fork":false,"pushed_at":"2026-02-13T00:56:33.000Z","size":1222,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-13T09:55:33.814Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-23T16:44:44.000Z","updated_at":"2026-02-13T00:56:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zot/frictionless","commit_stats":null,"previous_names":["zot/frictionless"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/zot/frictionless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zot%2Ffrictionless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zot%2Ffrictionless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zot%2Ffrictionless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zot%2Ffrictionless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zot","download_url":"https://codeload.github.com/zot/frictionless/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zot%2Ffrictionless/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29414343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-27T00:26:02.167Z","updated_at":"2026-04-12T22:29:31.717Z","avatar_url":"https://github.com/zot.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Frictionless\n\n**Version: 0.29.0**\n\n**A personal software ecosystem for Claude. Share the love. Or steal it.**\n\nChat with Claude to build apps. Use them together. Evolve them live. Claude runs parts of your app. Your code and Claude talk to each other. Ask Claude for improvements and Claude makes them appear; the app just stays running. Paste a job URL: Claude scrapes the details, fills the form, finds the salary and HQ even when they're not listed.\n\nFrictionless apps are **fully hot-loadable**. Lua backend, HTML templates. No recompiles. No restarts.\n\nAnd your apps can even **integrate with Claude**: your apps poke Claude and Claude pokes back. Right in the state.\n\nIn other words, **Claude has full access to the running app**. It can see and change values, call functions, even update the app as it runs without needing reloads.\n\nApps for\n\n- **Quality of life** — tame complex tasks with forms and buttons\n  - **Claude Code life** — point, click, Claude makes it so\n  - **UNIX life** — UIs for UNIX tools\n- **Life beyond Claude Code** — expenses, habits, projects, whatever\n- **Dashboards** — surface info at a glance\n- **Prototypes** — functional wireframes at a fraction of the tokens\n\nWhat does **\"fully\" hot-loadable** mean?\n\n- Both front-end changes and backend changes are hot-loadable.\n- All your state is in the backend and hotloading preserves it.\n- You rename a field of a prototype, all its instances' fields get renamed.\n- Yeah even structural changes to your data. *That's* what **fully hot-loadable** means.\n\n[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/Wd5n5fXoCuU/0.jpg)](https://youtu.be/Wd5n5fXoCuU)\n\n## How It Works\n\nBuilt on [ui-engine](https://github.com/zot/ui-engine). Less complexity → fewer tokens:\n\n- **No API layer** — no endpoints, no serialization, no DTOs\n- **No frontend code** — just HTML templates with declarative bindings\n- **No sync wiring** — change backend data, UI updates automatically—no code to detect or push changes\n\nClaude writes your app logic and skips everything else. See [overview](docs/OVERVIEW.md) for details.\n\n## Usage\n\nOnce installed, use `/ui show` to show the Frictionless console. You can build apps in the console.\n\nFrictionless uses your project's `.ui` directory for its apps and content.\n\n### Building UIs in the CLI\n\nAsk Claude to build a UI:\n\n```\n/ui-thorough make a contacts app with search and inline editing\n```\n\nOr display an existing app:\n\n```\n/ui show contacts\n```\n\n### Using the App Console\n\nThe app-console is your home base for managing Frictionless apps. Use `/ui show` to open it.\n\n**Downloading apps from GitHub:**\n\nClick the GitHub icon in the header to download apps directly from GitHub repositories.\n\n![Download from GitHub](docs/images/download-from-github.jpg)\n\n**Viewing app details:**\n\nSelect an app to see its requirements, open it, test it, or analyze it with Claude.\n\n![App view](docs/images/app-view.jpg)\n\nThe bottom panel has two tabs:\n- **Chat** — talk to Claude about the selected app\n- **Lua** — run Lua code directly in your app's environment\n\n### Standalone Mode\n\nRun frictionless independently for development or testing changes to Frictionless itself:\n\n```bash\nfrictionless serve --port 8000 --mcp-port 8001\nfrictionless serve --port 8000 --mcp-port 8001 --dir /path/to/ui-dir\n```\n\nThe `--dir` option specifies the working directory for Lua scripts, viewdefs, and apps. Defaults to `.ui`.\nThe `--mcp-port` is only needed if you want to connect it to Claude.\n\n### Bundling\n\nCreate custom binaries with your site embedded:\n\n```bash\nfrictionless bundle site/ -o my-ui-dir   # Create bundled binary\nfrictionless ls                          # List bundled files\nfrictionless cat index.html              # Show file contents\nfrictionless cp '*.lua' scripts/         # Copy matching files\nfrictionless extract output/             # Extract all bundled files to current directory\n```\n\n## Available Apps\n\nDownload these from the app-console's GitHub panel:\n\n| App | Description |\n|-----|-------------|\n| [Job\u0026nbsp;Tracker](https://github.com/zot/frictionless/tree/main/apps/job-tracker) | Track job applications through the hiring pipeline. Paste a URL and Claude scrapes the details. |\n\n## Documentation (in .ui by default)\n\n- **[Intro](install/resources/intro.md)** — Introduction and overview\n- **[Platform Reference](install/resources/reference.md)** — Architecture, tools, and quick start guide\n- **[Viewdef Syntax](install/resources/viewdefs.md)** — HTML template bindings (`ui-*` attributes)\n- **[Lua API](install/resources/lua.md)** — Class patterns and globals\n- **[Agent Workflow](install/resources/mcp.md)** — Best practices for AI agents\n- **[Themes](install/resources/themes.md)** — Theme switching and customization\n\n## Installation\n\nTell Claude:\n\n```\nInstall using github zot/frictionless readme\n```\n\nTo install manually:\n\n```bash\n# Download (replace OS/ARCH: linux-amd64, linux-arm64, darwin-amd64, darwin-arm64, windows-amd64)\nmkdir -p {home}/.claude/bin\ncurl -L https://github.com/zot/frictionless/releases/latest/download/frictionless-linux-amd64 -o {home}/.claude/bin/frictionless\nchmod +x {home}/.claude/bin/frictionless\n\ncd {your-project}\n\n# Add Frictionless to your project\nclaude mcp add frictionless -- {home}/.claude/bin/frictionless} mcp\n\n# Initialize the project\n{home}/.claude/bin/frictionless} install\n\n# Add the playwright MCP server to your project for better debugging\nclaude mcp add playwright -- npx @playwright/mcp@latest\n```\n\n## Future Directions\n\n### App Permissions\n\nLua apps have filesystem access via `io.open`, which allows reading files without Claude Code permission prompts. While convenient, this could be misused to explore directories the user hasn't explicitly shared.\n\n**Planned guardrails:**\n- Apps declare required permissions in a manifest (e.g., `app.json`)\n- Permissions scoped to specific paths: `.claude/`, project root, etc.\n- User approves permissions on first run\n- Sandbox enforcement in the Lua environment\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzot%2Ffrictionless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzot%2Ffrictionless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzot%2Ffrictionless/lists"}