grist-core README

The project's README from github.com/gristlabs/grist-core. As one markdown file: README.md.

Grist

Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database.

Grist is developed by Grist Labs, an NYC-based company 🇺🇸🗽. The French government 🇫🇷 organizations ANCT Données et Territoires and DINUM (Direction Interministérielle du Numérique) have also made significant contributions to the codebase.

The grist-core, grist-desktop, and grist-static repositories are all open-source (Apache License, Version 2.0). Grist Labs sells an edition of Grist with additional features. Grist Labs also offers free and paid hosted services at getgrist.com, as well as cloud packaging.

Questions? Feedback? Want to share what you're building with Grist? Join our official Discord server or visit our Community forum.

To keep up-to-date with everything that's going on, you can sign up for Grist's monthly newsletter.

https://github.com/user-attachments/assets/fe152f60-3d15-4b11-8cb2-05731a90d273

Features in grist-core

To see exactly what is present in grist-core, you can run the desktop app, or use docker. The absolute fastest way to try Grist out is to visit docs.getgrist.com and play with a spreadsheet there immediately – though if you do, please read the list of additional features that are not in grist-core.

However you try it, you'll quickly see that Grist is a hybrid database/spreadsheet, meaning that:

This difference can confuse people coming directly from Excel or Google Sheets. Give it a chance! There's also a Grist for Spreadsheet Users article to help get you oriented. If you're coming from Airtable, you'll find the model familiar (and there's also our Grist vs Airtable article for a direct comparison).

Here are some specific feature highlights of Grist (🇫🇷 marks heavy French govt. contributions):

If you are curious about where Grist is heading, see our roadmap, drop a question in our forum, or browse our extensive documentation.

Features not in grist-core

If you evaluate Grist by using the hosted version at getgrist.com, be aware that it includes some features that aren't present in grist-core. To be sure you're seeing exactly what is present in grist-core, you can run the desktop app, or use docker.

Here is a list of features available in the full edition of Grist that are not in grist-core, in chronological order of creation. If self-hosting, you can get access to a free trial of all of them by selecting the full edition of Grist on the Admin Panel. The full edition of Grist is free for individuals and small orgs with less than US $1 million in total annual funding. Learn more about that here.

Using Grist

To get the default version of grist-core running on your computer with Docker, do:

docker pull gristlabs/grist
docker run -p 8484:8484 -it gristlabs/grist

Then visit http://localhost:8484 in your browser.

On a brand new install you'll land on a Quick setup page that walks you through choosing an admin email, picking how people sign in, and setting who can use the site. To get past the first screen, look in the container's startup log for a line containing a generated boot key, and paste it in when prompted. Once you click Apply and go live! at the end of Quick setup, the site is open for business and you'll be able to create, edit, import, and export documents. There's a step-by-step walkthrough at First-run setup.

If you'd rather skip Quick setup entirely and start with an open, single-user setup, set GRIST_IN_SERVICE=true. You can come back to the same settings later from the Admin Panel.

To preserve your work across docker runs, share a directory as /persist:

docker run -p 8484:8484 -v $PWD/persist:/persist -it gristlabs/grist

Get templates at templates.getgrist.com for payroll, inventory management, invoicing, D&D encounter tracking, and a lot more, or use any document you've created on docs.getgrist.com.

If you need to change the port Grist runs on, set a PORT variable, don't just change the port mapping:

docker run --env PORT=9999 -p 9999:9999 -v $PWD/persist:/persist -it gristlabs/grist

To enable gVisor sandboxing, set --env GRIST_SANDBOX_FLAVOR=gvisor. This should work with default docker settings, but may not work in all environments.

You can find a lot more about configuring Grist, setting up authentication, and running it on a public server in our Self-Managed Grist documentation.

Using Grist with OpenRouter for Model Agnostic and Claude Support

(Instructions contributed by @lshalon)

Grist's AI Formula Assistant can be configured to use OpenRouter instead of connecting directly to OpenAI, allowing you to access a wide range of AI models including Anthropic's Claude models. This isn't the only way to use Claude models, but it's a good option if you want to use Claude models with Grist or intend to use other cheaper, faster, or potentially newer models. That's because this configuration gives you more flexibility in choosing the AI model that works best for your formula generation needs. To set up OpenRouter integration, configure the following environment variables:

Required: Set the endpoint to OpenRouter's API

ASSISTANT_CHAT_COMPLETION_ENDPOINT=https://openrouter.ai/api/v1/chat/completions

Required: Your OpenRouter API key

ASSISTANT_API_KEY=your_openrouter_api_key_here

Sign up for an OpenRouter API key at https://openrouter.ai/

Optional: Specify which model to use (examples below)

ASSISTANT_MODEL=anthropic/claude-3.7-sonnet

or other options like

ASSISTANT_MODEL=deepseek/deepseek-r1-zero:free
ASSISTANT_MODEL=qwen/qwq-32b:free
ASSISTANT_MODEL=mistralai/mistral-saba

Optional: Set a larger context model for fallback

ASSISTANT_LONGER_CONTEXT_MODEL=anthropic/claude-3-opus-20240229

With this configuration, Grist's AI Formula Assistant will route requests through OpenRouter to your specified model. This allows you to:

Access Anthropic's Claude models which excel at understanding context and generating accurate formulas Switch between different AI models without changing your Grist configuration Take advantage of OpenRouter's routing capabilities to optimize for cost, speed, or quality

You can find the available models and their identifiers on the OpenRouter website. Note: Make sure not to set the OPENAI_API_KEY variable when using OpenRouter, as this would override the OpenRouter configuration.

Available Docker images

The default Docker image is gristlabs/grist. This contains all of the Grist Community edition features, as well as extra source-available code for the full edition of Grist. This extra code is not under a free or open-source license, though by default is completely inert and inactive. This code becomes active only when enabled from th

grist-core (gristlabs/grist-core)

Searching Database…

这是什么?Grist 是一款开源的混合型电子表格/数据库工具:列既有数据库那样的类型和名称,也可以像电子表格那样填入 Python 语法的公式,并自动重新计算。
grist-core 是整个 Grist 产品,还是其中的一部分?grist-core 是可自行部署的服务器版本(社区版);grist-desktop 是一个独立的应用,支持 Linux、macOS 和 Windows,用于在本地编辑文档;grist-static 则是一个在浏览器中运行的版本,可在没有后端的网站上嵌入电子表格。
我该怎么让它运行起来?最快的方式是使用 Docker:运行默认的 grist-core 镜像,然后在浏览器中打开。随后会出现“快速设置”页面,引导你选择管理员邮箱和登录方式,过程中需要使用容器启动日志中打印的启动密钥。
自行部署时必须使用 Docker 吗?以服务器方式运行 grist-core 时,推荐使用 Docker;你也可以完全不用服务器,直接在 Linux、macOS 或 Windows 上运行独立的 grist-desktop 应用。
和托管版 getgrist.com 相比,缺少哪些功能?grist-core 中没有若干偏企业级的附加功能,包括 GristConnect SSO、Azure 存储后端、审计日志流式导出、高级管理控制、功能更全面的 AI 助手(核心版仅提供只针对公式的助手)、通知邮件、自动化、OAuth 应用,以及内置的 MCP 服务器。
grist-desktop 只能在 Linux 上运行,还是也支持 Windows 和 Mac?grist-desktop 可在 Linux、macOS 和 Windows 上运行,是一个独立的应用,用于在本地查看和编辑文档,无需服务器。
这个软件真的免费吗?授权上有没有什么陷阱?grist-core 本身以 Apache 2.0 协议完全开源,没有任何附加条件。Grist Labs 另外提供一个包含额外企业功能的“完整版”,但对于年度资金低于 100 万美元的个人和小型组织,该完整版是免费的。
我真的可以用 Python 编写公式吗?可以。grist-core 的公式支持完整的 Python 语法,包括标准库,同时还提供许多熟悉的 Excel 风格函数。
Grist 文档是以什么格式保存的?每个文档都是一个单独的 SQLite 文件,因此任何兼容 SQLite 的工具都可以读取其中的数值和文本数据,这让备份和迁移服务器变得很简单。
我能把 Airtable 或 Excel 中的数据导入进来吗?Grist 支持直接从 Airtable 导入,也支持与 Google Drive、Excel 和 CSV 之间的导入和导出,并且支持增量 CSV 导入,可以避免重复导入已经导入过的行。
有没有 AI 帮助编写公式的功能?有。grist-core 内置了专为生成公式而优化的 AI 公式助手,可以通过 OpenRouter 或任何兼容 OpenAI 的接口使用 OpenAI、Llama 等模型。
Creator
gristlabs
Size
53.2 MB
Stars
12K
Age
6y
Commits · 90 Days