Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Frisket

I wanted a spreadsheet that did AI things for investigative journalism. The NYT made one for itself, so I made one for the rest of us. Use Frisket to analyze zillions of documents, decades of audio, centuries of video, all in a friendly (???) spreadsheet format.

A screenshot

Quickstart

Use Frisket Desktop, Frisket Cloud, or Frisket Self-Hosted.

What Frisket can do

Frisket can analyze spreadsheets, PDFs, images, videos, probably a hundred other things. You drop content in, then run AI against it in a structured way. It's a new way to do projects like:

Those were all done the old-fashioned hard-work way, though. No one has done anything with Frisket yet, so you can be the first.

Installation

Frisket Desktop

To update, quit the app and install the new version. Your work stays put.

Frisket Cloud

You're lazy, I get it! Go to app.frisket.dev and request access. This is a Frisket instance that I personally run.

Frisket Self-Hosted

Single-user

If you just want to run Frisket on your own computer, use solo mode. You'll need Python 3.12.

pip install 'frisket-data[standard]'
frisket ./my-workspace

If you want more shiny extras, use pip install 'frisket-data[complete]'.

Note that it is NOT installed with frisket, it's frisket-data. I got package-name-sniped!

Team

If you're running Frisket on a server or want to support multiple users, go for team mode.

  1. Download the server install bundle (frisket-server-<version>.tar.gz)
  2. Extract it, then run sudo ./frisket-install from the extracted directory
  3. The installer asks a few questions and then you should be good to go. It can keep Frisket behind an SSH tunnel or serve a public domain using Caddy for HTTPS.

Codex claims it requires Linux, Docker Engine, and Docker Compose. It installs Frisket under /srv/frisket.

CAVEAT: The big, fancy parts

Frisket is split into a few parts, including a lightweight server and a heavier sidecar to optionally offload intensive work. As a result, different installs have slightly different features.

The easy one: in solo mode, pick Docling as your PDF-to-Markdown engine and click Download and set up. Frisket handles the rest.

For everything else in the sidecar (like the dots.mocr OCR that Cloud uses), build the image yourself from the repo root:

docker build -t frisket-models:local ./sidecar

Then run the sidecar and connect it to Frisket.

MODELS_TOKEN="$(openssl rand -hex 32)"

docker run -d \
    --name frisket-models \
    --restart unless-stopped \
    -p 127.0.0.1:8500:8500 \
    -e FRISKET_MODELS_TOKEN="$MODELS_TOKEN" \
    -v frisket-models-cache:/models \
    frisket-models:local

export FRISKET_MODELS_URL=http://127.0.0.1:8500
export FRISKET_MODELS_TOKEN="$MODELS_TOKEN"

frisket ./my-workspace

I haven't set the local sidecar up to easily publish yet, but I promise you can ask your agentic coding environment and it can walk you through the process.

Extras

Local models

Fair warning: some of these aren't yet available without some additional setup.

It's easy to set up an API key to talk to AI providers like OpenAI, Anthropic, OpenRouter and Gemini. But! You can also do most everything on the privacy of your own machine.

  • LM Studio and Ollama are supported out-of-the-box for local LLMs/VLMs
  • Local transcription can be powered by Parakeet, Whisper, MOSS, VibeVoice-ASR
  • spaCy or GLiNER for local entity extraction
  • Plenty of OCR engines like RapidOCR, Indra OCR, Surya 2, dots.mocr, PaddleOCR-VL, Tesseract
  • PDF to Markdown conversion with Markitdown, Docling
  • Clef for fast classification, either on your own model server or through Cloudflare

Paid document services like OpenDocRouter work too; just add an API key in the engine picker.

Ask

Ask is a chatbot that knows about your project. Turn on Run actions in its settings and it can convert documents, extract fields, and analyze the results for you, within whatever budget and approval level you set.

You can teach it repeatable workflows with skills: short instruction files you write in Settings → Skills (or ask Ask to write one for you).

Want to see what it's doing? Point the standard OTEL_EXPORTER_OTLP_* environment variables at Braintrust or any other OTLP backend.

Clean up disk space

Old projects can accumulate files they no longer need. With Frisket stopped:

frisket cleanup ./my-workspace/my-project.frisket          # see what would go
frisket cleanup ./my-workspace/my-project.frisket --apply  # actually delete it

Write a plugin

Plugins can add actions, panels, imports, integrations: pretty much anything. They're easy to make!

frisket plugin init --id example.my-plugin --output ./my-plugin --with action
frisket plugin build ./my-plugin
frisket plugin validate ./my-plugin

Me

Hi, I'm Soma!

I teach data journalism at Columbia's J-School where I run a year-long Data Journalism MS and a nice short summer program. I give a lot of talks on AI and wrote history's friendliest PDF-processing library.

Email me at jonathan.soma@gmail.com.

People say things like "oh buy me a coffee if you like this" but no, I'm more demanding: go look at these poor cats and then donate to my cat rescue.

Metadata

Release files for frisket-data 0.1.1a104

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for frisket-data 0.1.1a104
File Size Uploaded Provenance Actions
frisket_data-0.1.1a104.tar.gz 11.2 MB Without provenance Details for frisket_data-0.1.1a104.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for frisket-data 0.1.1a104
File Actions
frisket_data-0.1.1a104-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for frisket_data-0.1.1a104-py3-none-win_amd64.whl
frisket_data-0.1.1a104-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details for frisket_data-0.1.1a104-py3-none-manylinux_2_34_x86_64.whl
frisket_data-0.1.1a104-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details for frisket_data-0.1.1a104-py3-none-manylinux_2_34_aarch64.whl
frisket_data-0.1.1a104-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details for frisket_data-0.1.1a104-py3-none-macosx_14_0_arm64.whl

Total release size: 57.5 MB

Release files / frisket_data-0.1.1a104.tar.gz

Download URL frisket_data-0.1.1a104.tar.gz
Size 11.2 MB
Tags Source
SHA-256 checksum
How to use checksums
ea8cfcfe6ce3b74dc95d3307e7ac30fed4b7581dc6b82f87e0545cccd514f014
BLAKE2b-256 checksum
How to use checksums
0c64bcf38634e5fcaa9fcc71fd06ca751c493d41d26c2e67df7282e6b8cc4d8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / frisket_data-0.1.1a104-py3-none-win_amd64.whl

Download URL frisket_data-0.1.1a104-py3-none-win_amd64.whl
Size 11.6 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
d8b05bf6b62485265eaf48be3229d2ec3dcd752f96cb08baef930bdfaebee0bc
BLAKE2b-256 checksum
How to use checksums
1413807c22ff164541c70dad507f64ff502ae3495f66f513fbf7320f06a6e07e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / frisket_data-0.1.1a104-py3-none-manylinux_2_34_x86_64.whl

Download URL frisket_data-0.1.1a104-py3-none-manylinux_2_34_x86_64.whl
Size 11.6 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
6a4ecfa22eef2e89aad7bfa0c9626f99dd30a0cc1155863b2a80a5ec5eb916e2
BLAKE2b-256 checksum
How to use checksums
c46b71233bd29b5835eadcc219cdd0c1adee9ac935fa03772ac026ff70be8d72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / frisket_data-0.1.1a104-py3-none-manylinux_2_34_aarch64.whl

Download URL frisket_data-0.1.1a104-py3-none-manylinux_2_34_aarch64.whl
Size 11.5 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
a99bcecb8a2f3ee5e04c7b4a78f0382cde46c965e8b041871401d275b8b2e526
BLAKE2b-256 checksum
How to use checksums
50bc1d9d3805d2747e9bf6cc2b1c46a0687babaedb362f98658bfababb570bb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / frisket_data-0.1.1a104-py3-none-macosx_14_0_arm64.whl

Download URL frisket_data-0.1.1a104-py3-none-macosx_14_0_arm64.whl
Size 11.5 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
6010ebe862ff1c33d7a70b727047cf3789405d8bb6b615d7296ce8b35de6e0f5
BLAKE2b-256 checksum
How to use checksums
d0027afceb054f3c094907eace97f322701b0f6336e2f370d5db7c2ce8b19841
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for frisket-data 0.1.1a104

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page