T
tentislabs/tent.js
The full-stack React framework built for AI
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Official descriptionThe full-stack React framework built for AI. Data, flows, AI agents and screens in one TypeScript framework.
Install & config
Client config (built from the install command this repo gives)
{
"mcpServers": {
"tentislabs-tent-js": {
"command": "npx",
"args": ["tent"]
}
}
}Parsed from the README we fetched on 2026-10-26; we have not executed it.
command/args come from the install command the repository states. When it is ambiguous, the project README wins.
VS Code (.vscode/mcp.json - the key is servers)
{
"servers": {
"tentislabs-tent-js": {
"command": "npx",
"args": ["tent"]
}
}
}Same server, but VS Code keeps it under <code>servers</code>.
Claude Code (command line)
claude mcp add --transport stdio tentislabs-tent-js -- npx tent
Claude Code does not read a config file; add the server with this command.
Key names differ by client: Clients & CLI
- Star count
- 1 ★ · tentislabs/tent.js · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-10-24 · last seen 2026-11-14 · seen 25× · listed by 1 sources
- Score
- score 103 · 1 ★ · 1 sources · repo
- Install
npx tent
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
npx tent. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
tentislabs/tent.js;first catalogued 2026-10-24;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.Tent.js
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
The full-stack React framework built for AI.
Data, flows, AI agents and screens in one TypeScript framework.
## Quick start
sh
npm install -g tentjs
tent new my-app
cd my-app && tent dev
The app runs at http://localhost:3000, and each save shows in the open page. With nothing installed first, npm create tent my-app makes the same project, and npx tent dev runs it.
## Why Tent.js
One framework for the whole app. Data, access rules, background flows, AI agents and React screens are defined in one TypeScript project, and one engine runs them together. No separate database service, queue, workflow tool or auth provider to wire up.
Connected both ways. Call any outside service with its keys, limits and retries handled. Offer your app's functions as an API with access keys, as an MCP server, and as a command line. Receive webhooks from other services.
Built for AI to build with. Every new project comes with an AGENTS.md, the full docs ship inside the package, and tent map and tent check give a coding agent the whole app and every problem in it at once.
Data with its rules. A table declares its columns and who may read and change its rows. The engine holds every query to those rules, and open pages update live when the data changes.
Agents and flows built in. Models, tools and long-running flows that survive restarts are part of the app, not separate services.
History of the whole app. Every change is recorded in the app's own terms, and going back brings the data with it.
Runs anywhere. tent dev on your laptop. tent start on any server, with HTTPS for your domains, and many readers beside one writer when one machine is not enough. Open source, MIT licence.
## A small app
In the project that tent new made: a table with who may read and add its rows, a query, a change, and a screen that reads the one and calls the other, in place of the first screen.
ts
// notes.ts
import { anyone, change, input, query, table, text } from 'tentjs'
export const notes = table('notes', {
columns: { body: text({ min: 1, max: 280 }) },
access: { read: anyone('the notes are public'), add: anyone('every visitor may sign') },
})
export const latestNotes = query('latestNotes', {
access: anyone('the notes are public'),
rows: notes.newest('createdAt').limit(20),
})
export const addNote = change('addNote', {
access: anyone('every visitor may sign'),
input: { body: text({ min: 1, max: 280 }) },
set: notes.add({ body: input('body') }),
})
tsx
// screens/home.tsx
import { anyone, read, screen, Form } from 'tentjs/ui'
import { addNote, latestNotes } from '../notes'
export const homeScreen = screen('homeScreen', {
path: '/',
access: anyone('the guestbook is public'),
data: { notes: read(latestNotes) },
view: ({ notes }) => (
Guestbook
Sign
{notes.map((note) => (
{note.body}
))}
),
})
tent check reports every mistake at once, each with its fix, and tent dev runs it.
## Docs
The docs ship inside the package, so they always match the version you run:
Data, flows, AI agents and screens in one TypeScript framework.
## Quick start
sh
npm install -g tentjs
tent new my-app
cd my-app && tent dev
The app runs at http://localhost:3000, and each save shows in the open page. With nothing installed first, npm create tent my-app makes the same project, and npx tent dev runs it.
## Why Tent.js
One framework for the whole app. Data, access rules, background flows, AI agents and React screens are defined in one TypeScript project, and one engine runs them together. No separate database service, queue, workflow tool or auth provider to wire up.
Connected both ways. Call any outside service with its keys, limits and retries handled. Offer your app's functions as an API with access keys, as an MCP server, and as a command line. Receive webhooks from other services.
Built for AI to build with. Every new project comes with an AGENTS.md, the full docs ship inside the package, and tent map and tent check give a coding agent the whole app and every problem in it at once.
Data with its rules. A table declares its columns and who may read and change its rows. The engine holds every query to those rules, and open pages update live when the data changes.
Agents and flows built in. Models, tools and long-running flows that survive restarts are part of the app, not separate services.
History of the whole app. Every change is recorded in the app's own terms, and going back brings the data with it.
Runs anywhere. tent dev on your laptop. tent start on any server, with HTTPS for your domains, and many readers beside one writer when one machine is not enough. Open source, MIT licence.
## A small app
In the project that tent new made: a table with who may read and add its rows, a query, a change, and a screen that reads the one and calls the other, in place of the first screen.
ts
// notes.ts
import { anyone, change, input, query, table, text } from 'tentjs'
export const notes = table('notes', {
columns: { body: text({ min: 1, max: 280 }) },
access: { read: anyone('the notes are public'), add: anyone('every visitor may sign') },
})
export const latestNotes = query('latestNotes', {
access: anyone('the notes are public'),
rows: notes.newest('createdAt').limit(20),
})
export const addNote = change('addNote', {
access: anyone('every visitor may sign'),
input: { body: text({ min: 1, max: 280 }) },
set: notes.add({ body: input('body') }),
})
tsx
// screens/home.tsx
import { anyone, read, screen, Form } from 'tentjs/ui'
import { addNote, latestNotes } from '../notes'
export const homeScreen = screen('homeScreen', {
path: '/',
access: anyone('the guestbook is public'),
data: { notes: read(latestNotes) },
view: ({ notes }) => (
Guestbook
Sign
{notes.map((note) => (
{note.body}
))}
),
})
tent check reports every mistake at once, each with its fix, and tent dev runs it.
## Docs
The docs ship inside the package, so they always match the version you run:
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/tentislabs-tent-js/)
- Source
- github · https://github.com/tentislabs/tent.js
- Browse by field
- Open source
- Traction
- 1 ★
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.