Full-stack Python + React framework for building applications with workflows, tables, UIs, and LLM integration.
Project description
hof-engine
Full-stack Python + React framework for building applications with workflows, database tables, UIs, and LLM integration -- all defined as code.
Features
- Tables: Define database schemas as Python classes with auto-generated CRUD APIs
- Functions: Backend operations exposed as API endpoints and CLI commands
- Flows: Workflow DAGs with parallel execution, LLM nodes, and human-in-the-loop
- UIs: Native React components with hot reload via Vite
- Cron Jobs: Scheduled tasks with Celery Beat
- CLI: Full CLI access to all features
- Admin Dashboard: Visual flow viewer, table browser, execution history, and logs
- LLM Integration: First-class support via llm-markdown with structured outputs
Quick Start
pip install hof-engine
hof new project my-app
cd my-app
Define a table:
# tables/task.py
from hof import Table, Column, types
class Task(Table):
title = Column(types.String, required=True)
done = Column(types.Boolean, default=False)
Define a function:
# functions/greet.py
from hof import function
@function
def greet(name: str) -> dict:
return {"message": f"Hello, {name}!"}
Define a flow:
# flows/onboarding.py
from hof import Flow
onboarding = Flow("onboarding")
@onboarding.node
def create_task(user_name: str) -> dict:
return {"task": f"Welcome {user_name}"}
@onboarding.node(depends_on=[create_task])
def notify(task: str) -> dict:
return {"notified": True}
Run:
hof db migrate
hof dev
Requirements
- Python 3.11+
- Node.js 18+ (for React UI)
- PostgreSQL
- Redis
Documentation
See the docs/ directory:
- Getting Started
- Tables Reference
- Functions Reference
- Flows Reference
- UI Reference
- LLM Reference
- CLI Reference
- Configuration
Ecosystem
hof-engine is part of the bithof platform:
| Repo | Role |
|---|---|
| hof-engine (this repo) | Core framework (pip package) |
| hof-components | Reusable modules and templates, copied via hof add |
| hof-os | Agency operations: deployment, provisioning, billing, design system generation |
| design-system-<customer> | Per-customer design tokens + Tailwind theme (git submodule in project repos) |
| customer-acme-test | Example customer project |
For application examples, see hof-components/docs/examples/.
License
MIT
Releasing to PyPI
This repository is configured for Trusted Publishing via GitHub Actions:
-
.github/workflows/publish.ymlfor PyPI -
.github/workflows/publish-testpypi.ymlfor TestPyPI -
The repository can stay private.
-
No
PYPI_TOKENsecret is required. -
Publishing to PyPI happens when a GitHub Release is published (or manually via workflow dispatch).
-
Publishing to TestPyPI is manual via workflow dispatch.
One-time setup in your PyPI account:
- Go to PyPI Trusted Publishers.
- Add a publisher with:
- PyPI project name:
hof-engine - Owner/repo: your GitHub repo for this project
- Workflow:
publish.yml(filename only) - Environment:
pypi
- PyPI project name:
- In GitHub, create an environment named
pypi(recommended to require manual approval).
Optional setup for TestPyPI:
- Go to TestPyPI Trusted Publishers.
- Add a publisher with:
- TestPyPI project name:
hof-engine - Owner/repo: your GitHub repo for this project
- Workflow:
publish-testpypi.yml(filename only) - Environment:
testpypi
- TestPyPI project name:
- In GitHub, create an environment named
testpypi.
Release flow:
- Bump/update code as needed and push to default branch.
- Create and push a git tag like
v0.1.1(git tag v0.1.1 && git push origin v0.1.1). - The workflow builds and uploads the package to PyPI under your account/project ownership.
- Optional: also publish a GitHub Release for changelog/visibility.
Manual publish options:
- Publish to PyPI now (no release): run the
Publish to PyPIworkflow via GitHub ActionsRun workflow. - Publish to TestPyPI: run the
Publish to TestPyPIworkflow via GitHub ActionsRun workflow.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hof_engine-0.1.0.tar.gz.
File metadata
- Download URL: hof_engine-0.1.0.tar.gz
- Upload date:
- Size: 273.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cc01fedbc054060625e50cab5bbcaec73d915c56fbd02e1ba76d4cf32c518f6
|
|
| MD5 |
7a3cb59f668a649be0660cda214705de
|
|
| BLAKE2b-256 |
3fd49055b08847564a7d18683bae22fc8bf10c9db107032c0d9c9d209384b928
|
Provenance
The following attestation bundles were made for hof_engine-0.1.0.tar.gz:
Publisher:
publish.yml on jhoetter/hof-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hof_engine-0.1.0.tar.gz -
Subject digest:
4cc01fedbc054060625e50cab5bbcaec73d915c56fbd02e1ba76d4cf32c518f6 - Sigstore transparency entry: 1076533467
- Sigstore integration time:
-
Permalink:
jhoetter/hof-engine@fccce8770946fa26c5e079babc85806b5114729b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jhoetter
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fccce8770946fa26c5e079babc85806b5114729b -
Trigger Event:
push
-
Statement type:
File details
Details for the file hof_engine-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hof_engine-0.1.0-py3-none-any.whl
- Upload date:
- Size: 263.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4037bed8fb2124a66be7e031ff8b154067383325e9b361cf94f759747b271c5
|
|
| MD5 |
2dd690403f8e9807855b471cd0648b4d
|
|
| BLAKE2b-256 |
5573ae8af5dcaccb05580d0c479a9354ea97df0dc5bae9b1c070c67d00948ab5
|
Provenance
The following attestation bundles were made for hof_engine-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on jhoetter/hof-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hof_engine-0.1.0-py3-none-any.whl -
Subject digest:
c4037bed8fb2124a66be7e031ff8b154067383325e9b361cf94f759747b271c5 - Sigstore transparency entry: 1076533475
- Sigstore integration time:
-
Permalink:
jhoetter/hof-engine@fccce8770946fa26c5e079babc85806b5114729b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jhoetter
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fccce8770946fa26c5e079babc85806b5114729b -
Trigger Event:
push
-
Statement type: