Zero
dependencies.

One framework, four languages, 140 features, zero runtime dependencies.

The Intelligent Native Application 4ramework.

Here's what you're not installing.

Install a popular micro-framework and its dependencies come with it. Install Tina4 and you get Tina4.

$
    $

      Measured on 15 October 2026 with each package manager's own install, latest versions: Flask 3.1.3, Slim 4.15.3 with slim/psr7 (the PSR-7 package its hello-world needs), Express 5.3.0, Sinatra 4.2.1 (resolved from rubygems.org).

      A REST route in one file.

      Scaffold with the CLI, add a route, return JSON.

      1. Create
        $tina4 init python my-app
        $tina4 serve
      2. Add a route
        from tina4_python import get @get("/api/hello/{name}") async def hello(request, response): return response.json({"hello": request.params["name"]})
        \Tina4\Get::add("/api/hello/{name}", function(\Tina4\Response $response, $name) { return $response->json(["hello" => $name]); });
        Tina4::Router.get("/api/hello/{name}") do |request, response| response.json({ hello: request.params[:name] }) end
        import { Router } from "tina4-nodejs"; Router.get("/api/hello/{name}", async (req, res) => { return res.json({ hello: req.params.name }); });
      3. Call it
        $curl localhost:7146/api/hello/Ada {"hello":"Ada"}
      • Routing Every HTTP method: GET, POST, PUT, PATCH and DELETE.
      • Path parameters {name} in the path arrives in your handler.
      • JSON responses Return JSON with one call, no serialiser to set up.
      • Swagger docs A Swagger UI at /swagger while you develop, built from your routes.
      4
      languages: Python, PHP, Ruby, Node.js
      140
      built-in features
      0
      runtime dependencies
      29,000
      JSON requests a second on PHP

      Your AI doesn't know Tina4 yet. Give it 30 seconds.

      Paste this into Claude, Cursor, Copilot or whatever you already have open. Same prompt, four languages.

      Read https://tina4.com/llms.txt and build me a REST API with a Todo model and JWT auth in Python.

      What your assistant runs next
      $tina4 init python todo-api
      $tina4 generate model Todo
      $tina4 migrate
      $tina4 serve
      Swagger at localhost:7146/swagger

      llms.txt is a bootstrap protocol written for machines. It tells your assistant to drive the tina4 CLI and use the built-ins instead of inventing them.

      Zero dependencies, including the AI. Build with AI

      Learn it once. Write it in four.

      Same project shape, same CLI, same ideas. Learn it in Python, then recognise every pattern in PHP, Ruby or Node.js.

      The things you'd normally install.

      Shipped, in sync, in all four languages. Nothing to add to a requirements file.

      HTTP

      src/routes/Drop a file in and it's a route. Typed params like {id:int} and {id:uuid} reject bad input with a 404 before your handler runs.
      /swaggerTyped, grouped API docs generated from your routes.
      /graphqlA zero-dependency GraphQL engine, schema built from your ORM models, IDE included.

      Data

      sqlite:///app.dbOne ORM over SQLite, PostgreSQL, MySQL, MSSQL, Firebird and MongoDB.
      tina4 migrateMigrations that apply on boot, once, even when several processes start together.
      FrondOne Twig-compatible template engine: inheritance, macros, filters.

      Realtime

      ws://WebSocket and server-sent events, with a Redis backplane when you scale out.
      background()Queues, file-backed by default. RabbitMQ, Kafka or MongoDB when you outgrow it. No threads.

      Security

      BearerPOST, PUT, PATCH and DELETE need a token by default. GET stays public.
      JWTHS256 and RS256, PBKDF2 password hashing, rate limiting and CSRF form tokens.

      Tooling

      tina4One Rust CLI. init, serve and migrate behave the same in every language.
      /__devRoutes, requests, SQL runner, queue monitor, mailbox, WebSocket inspector, error tracker.
      MCPBuilt-in dev tools, so your assistant drives the real framework.

      Also in the box.

      A 2.3 KB frontend for the browser, skills for your AI assistant, and a reviewer that hands it the context.

      tina4-js 2.3 KB gzip

      The reactive frontend: signals, Web Components, a router, an API client, WebSocket, PWA and SSE. Load only the modules you import.

      tina4-js docs
      import { signal, html } from 'tina4js';
      
      const count = signal(0);
      
      html`<button @click=${() => count.value++}>
        Clicked ${count} times
      </button>`;

      Skills for your AI

      One command installs the current Tina4 skills for Claude, Codex, Cursor, or all three.

      The tina4 CLI
      $ tina4 skills all

      Tina4 Code Viewer

      A read-only desktop reviewer that understands the Tina4 layout. Leave line-anchored comments, then export a bundle any AI agent can act on. Signed builds for macOS, Windows and Linux.

      Download
      Tina4 Code Viewer: a project's files on the left, a markdown plan in the middle with a comment being added on line 6, review comments and a live audit panel on the right

      Zero dependencies. Just add coffee.

      Two commands install it. Two more and you're serving.

      macOS and Linux
      $curl -fsSL https://tina4.com/install.sh | sh
      $tina4 setup
      Windows, in PowerShell
      >irm https://tina4.com/install.ps1 | iex
      >tina4 setup
      Then
      $tina4 init python my-app
      $tina4 serve