Pixeltable and Railway

Railway hosts any app: connect a GitHub repo, a local directory, or a Docker image, and it builds (Railpack or a Dockerfile) and deploys. Pixeltable is the data, orchestration, and serving layer in one Python file: typed media tables, computed columns, embedding indexes, and FastAPIRouter. Railway does not own that schema. Pixeltable Cloud is Limited Beta, not GA. They are complementary: Railway can host the Pixeltable process.

pip install 'pixeltable[serve]'
See how it works

App host vs the application schema

SidePixeltableRailway
At a glance
  • Database, orchestration, and serving in one Python file
  • Insert a row; computed columns, indexes, and HTTP follow
  • Open source; Pixeltable Cloud is Limited Beta, not GA
  • Not a general-purpose host for arbitrary frameworks
  • Deploy from GitHub, `railway up`, or a container image (Railpack or Dockerfile)
  • Usage billed per second: RAM $10/GB-month, CPU $20/vCPU-month, egress $0.05/GB, volumes $0.15/GB-month; builds are free
  • Free plan: $1/month credit after a 30-day $5 trial; Hobby $5/month including $5 usage; Pro $20/month including $20 usage
  • Hosts any app; you still add storage, transforms, and an index unless the schema owns them

Where each fits

Railway wins Git/CLI containers, private networking, and per-second usage billing. Pixeltable wins insert-triggered multimodal pipelines and HTTP declared beside the tables. Last reviewed: Oct 2026. Sources: docs.railway.com (services, CLI, pricing/plans), docs.pixeltable.com/howto/deployment/serving.

FeaturePixeltableRailway
What it is
Application schema: store, transform, index, serve
Cloud host for Git, CLI, and Docker services
Deploy any language or framework
Python Pixeltable apps; not a general PaaS
Any container: GitHub, local dir, or registry image
Multimodal tables and incremental compute
Typed media columns; dependents of a changed row recompute
You write that layer in the process Railway runs
Embedding index
EmbeddingIndex declared on the source table
A service you deploy beside the app (or skip)
HTTP serving
FastAPIRouter in the same file as the tables
The host: start command, healthcheck, replicas, private networking
Pricing shape
Open source locally; Cloud Community is free in Limited Beta
Plan fee plus metered CPU, RAM, volume, and egress

One file vs a process Railway hosts

Pixeltable: tables, chunking, EmbeddingIndex, FastAPIRouter. Railway: deploy whatever FastAPI you wrote; the data layer is still yours. Last reviewed: Oct 2026. Railway: https://docs.railway.com/guides/cli and https://docs.railway.com/services

Pixeltable

import pixeltable as pxt
from pixeltable.functions.document import document_splitter
from pixeltable.functions.huggingface import sentence_transformer
from pixeltable.serving import FastAPIRouter
TableModel = pxt.model_base()
embed = sentence_transformer.using(
model_id='sentence-transformers/all-MiniLM-L6-v2'
)
class Docs(TableModel, name='docs'):
document: pxt.Document
title: pxt.String
class Chunks(
TableModel,
name='chunks',
base=Docs,
iterator=document_splitter(
document=Docs.document, separators='sentence,token_limit', limit=512
),
):
__indexes__ = [pxt.EmbeddingIndex(text, string_embed=embed)]
@pxt.query
def search_docs(query: str, limit: int = 5):
sim = Chunks.text.similarity(string=query)
return (
Chunks.order_by(sim, asc=False)
.limit(limit)
.select(Chunks.text, Chunks.title, sim)
)
api = FastAPIRouter(name='docs')
api.add_insert_route(Docs, path='/docs', inputs=[Docs.document, Docs.title])
api.add_query_route(path='/search', query=search_docs)
# pxt schema update app.py docs && pxt service update app.py docs
# Or mount the router on FastAPI and host that process on Railway.

Railway

# app.py hosted on Railway. The platform runs the container;
# object storage, the embed job, and the vector DB are still yours.
from fastapi import FastAPI
app = FastAPI()
@app.post('/docs')
def insert_doc(title: str, path: str):
# upload to S3, enqueue a worker, upsert vectors...
return {'ok': True}
@app.get('/search')
def search(q: str):
# query the index you deployed beside this service
return []
# Git: connect a GitHub repo; Railway builds with Railpack or a Dockerfile.
# CLI (https://docs.railway.com/guides/cli):
# railway login
# railway init
# railway up
# railway add --database postgres
# Start command: uvicorn app:app --host 0.0.0.0 --port $PORT

When each belongs

Use Pixeltable when

  • The app is media, models, and retrieval

    One Python file for tables, computed columns, indexes, and HTTP. A coding agent writes it; you review one diff. pip install pixeltable. Cloud is Limited Beta.

  • You were about to glue FastAPI to S3, a job runner, and a vector DB

    Railway will host that stack. Pixeltable replaces the glue for this job, whether you run it locally or as the process Railway deploys.

Use Railway when

  • You need to host any app, not only a Pixeltable schema

    Web backends, workers, and templates from Git or Docker. Railway is the host. Docs: https://docs.railway.com/services

  • You want usage-billed containers with a plan fee

    Hobby $5/month including $5 usage; Pro $20/month including $20. RAM $10/GB-month, CPU $20/vCPU-month. https://docs.railway.com/pricing/plans

Making the right choice

  • Complementary, not a swap

    • Railway hosts the process. Pixeltable is the schema inside it (or on Pixeltable Cloud, Limited Beta).
    • A typical glue stack on Railway is still object storage + a worker + a vector DB + FastAPI. The host does not collapse those boxes.
    • To run together: mount FastAPIRouter on uvicorn (docs.pixeltable.com/howto/deployment/serving) and set that as the Railway start command, or keep Cloud as the catalog and Railway as another service.
    • Same aisle as Render, Fly.io, Modal, and Vercel: serving and deploy, not the multimodal table.

Frequently asked questions

Declare the app file. Host it on Railway if you want.

Tables, indexes, and routes in app.py. Apply with pxt schema update and pxt service update. Railway still hosts whatever process you ship. Cloud is Limited Beta.

pip install 'pixeltable[serve]'
See how it worksGet expert guidance