statespace-tech

ToolFront

Community statespace-tech
Updated

Turn your data into shareable RAG apps in minutes. All in pure Markdown. Zero boilerplate.

ToolFront

Turn your data into shareable LLM apps in minutes. All in pure Markdown. Zero boilerplate.

Test SuitePython 3.10+PyPI packageLicenseDiscordX

Documentation: docs.toolfront.ai

Source code: https://github.com/statespace-tech/toolfront

ToolFront is a declarative framework for building modular LLM applications in Markdown.

Example

Create it

Start with one file: README.md

---
tools:
  - [date]
---

# Instructions
- Run `date` to check today's date

Serve it

Run your app locally:

toolfront serve .

Note: Runs on http://127.0.0.1:8000

Ask it

Include the app URL in your prompts:

Claude Code
claude "Get today's date from http://127.0.0.1:8000"
GitHub Copilot
copilot "Get today's date from http://127.0.0.1:8000"
Codex
codex "Get today's date from http://127.0.0.1:8000"

For custom agents, add an HTTP request tool:

Python
import subprocess

@tool
def curl_tool(url: str, args: list[str]) -> str:
    """Execute curl commands to interact with Statespace apps."""
    result = subprocess.run(
        ['curl', *args, url],
        capture_output=True,
        text=True
    )
    return result.stdout
TypeScript
import { execFileSync } from 'child_process';

/**
 * Execute curl commands to interact with Statespace apps.
 */
function curlTool(url: string, args: string[]): string {
    const result = execFileSync('curl', [...args, url], {
        encoding: 'utf-8'
    });
    return result.toString();
}
Rust
use std::process::Command;

/// Execute curl commands to interact with HTTP endpoints.
fn curl_tool(url: &str, args: Vec<&str>) -> String {
    let output = Command::new("curl")
        .args(&args)
        .arg(url)
        .output()
        .unwrap();
    String::from_utf8_lossy(&output.stdout).to_string()
}

Complex example

Upgrade it

Your app can grow into a full project:

project/
├── README.md
├── data/
│   ├── log1.txt
│   ├── log2.txt
│   └── log3.txt
└── src/
    ├── agentic_rag.md
    ├── text2sql.md
    └── vector_search.md

3 directories, 9 files

Update README.md with CLI tools to progressively discover and read other files:

---
tools:
  - [date]
  - [ls]
  - [cat]
---

# Instructions
- Run `date` to check today's date
- Use `ls` and `cat` to discover and read other files

Compose it

Add pages and CLI tools for different workflows:

Vector Search
---
tools:
  - [curl, -X, POST, https://host.pinecone.io/records/namespaces/user/search]
---

# Vector search instructions:
- Query documents with your vector database API

Note: replace the API with your own (e.g., Pinecone, Weaviate, Qdrant)

Text-to-SQL
---
tools:
  - [psql, -U, $USER, -d, $DB, -c, { regex: "^SELECT\b.*" }]
---

# Text-to-SQL instructions:
- Use `psql` for read-only PostgreSQL queries

Note: use your own database CLI (e.g., mysql, sqlite3, mongosh).

Agentic RAG
---
tools:
  - [grep, -r, -i, { }, ../data/]
---

# Document search instructions:
- Use `grep` to search documents in `../data/`

Note: apps can include any file type (e.g. .csv, .sqlite, .json)

Deploy it

Create a free Statespace account to deploy authenticated private apps:

toolfront deploy . --private

Alternatively, share public apps with the community:

toolfront deploy . --public

Note Statespace gives you app URLs you can paste in prompts and instructions.

Installation

Install toolfront with your favorite PyPI package manager:

pip
pip install toolfront
uv
uv add toolfront
poetry
poetry add toolfront

Community & Contributing

License

This project is licensed under the terms of the MIT license.

MCP Server · Populars

MCP Server · New