AWS AI Hack Day 2025: Ready to spend a full day pushing the limits of AI?
AWS AI Hack Day Micro Conference stretches into a full-day hackathon at the AWS GenAI Loft in San Francisco giving developers the time to go deeper, collaborate longer, and actually ship what they start.
What’s happening on the ground:
⚡ Hands-on technical challenge powered by FriendliAI
🧠 A 30-minute session on scaling inference and agents
👀 An early preview of Friendli Agent shared live with the community
📍 AWS GenAI Loft, 525 Market St
🗓️ August 22, 9:30 AM – 8:00 PM PT
If you're ready to experiment, connect, and create, this is where the Bay Area's AI community will be. Register here → https://lu.ma/aws-08-22-25
QuickStart Guide
The CLI binary is available as fa (alias: friendli-app). It manages app deploy/update and basic
suite operations.
- Install (Python 3.11+)
- With pip:
pip install friendli-app
- Authenticate
- Get a Personal Access Token: https://friendli.ai/suite/setting/tokens
- Export it or pass per-command with
--token.
export FRIENDLI_TOKEN=YOUR_PAT
# Verify
fa whoami
# Or without exporting
fa --token YOUR_PAT whoami
- Deploy an example app
Each app must contain a main.py at its root. Example apps live under examples/.
# Deploy examples/simple-app with a name, project, and optional env vars
fa deploy examples/simple-app \
--name my-simple-app \
--project-id <PROJECT_ID> \
-e KEY1=VALUE1 -e KEY2=VALUE2
- Manage apps
# List apps in a project
fa list --project-id <PROJECT_ID>
# Update source archive from a directory
fa update <APP_ID> ./path/to/app
# Restart or terminate
fa restart <APP_ID>
fa terminate <APP_ID>
Notes
- Command alias:
friendli-appis identical tofa. - Example deployment prints a link to view status in the Suite UI.
Commands
Global options
--token: Personal access token; overridesFRIENDLI_TOKEN.-h, --help: Show help for the current command.
Common
fa whoami: Show logged-in user info.- Usage:
fa whoamiorfa --token <PAT> whoami
- Usage:
fa version: Show CLI version.- Usage:
fa version
- Usage:
Apps
fa deploy <APP_DIR>: Deploy an app directory.- Options:
-n, --name <NAME>,-p, --project-id <PROJECT_ID>,-e, --env KEY=VALUE(repeatable) - Notes:
main.pymust exist at app root; ~50MB directory limit; detectspyproject.tomlorrequirements.txtto bundle deps. - Example:
fa deploy examples/simple-app -n my-simple-app -p <PROJECT_ID> -e KEY1=VALUE1
- Options:
fa update <APP_ID> <APP_DIR>: Update an app’s source archive.- Notes:
main.pyrequired; ~50MB limit. - Example:
fa update <APP_ID> ./my-app
- Notes:
fa list --project-id <PROJECT_ID>: List apps in a project.- Example:
fa list -p <PROJECT_ID>
- Example:
fa restart <APP_ID>: Restart an app.- Example:
fa restart <APP_ID>
- Example:
fa terminate <APP_ID>: Terminate an app.- Example:
fa terminate <APP_ID>
- Example:
Example Apps
Each example is its own Python project. See the example’s README for setup, dependencies, and usage.
- examples/simple-app: Minimal AgentApp with sync/async callbacks and streaming. README
- examples/streaming-chat-memory: Streaming chat with persistent memory (mem0), OpenAI-compatible
/v1/chat/completions. README - examples/daily-assistant-mcp: MCP server exposing practical tools (tip calc, timezone, BMI, password). README
- examples/debug-echo: Tiny FastAPI echo service for connectivity testing. README
- examples/debug-fai: FastAPI app calling Friendli Serverless via OpenAI SDK; includes passthrough endpoint. README
- examples/langgraph-research-agent: LangGraph multi-agent research workflow with streaming. README
- examples/async-crewai-agent: CrewAI-based background task agent with progress and results endpoints. README
- examples/adk-multi-agent-research: Google ADK-style multi-agent research FastAPI service. README
- examples/autogen-dev-team: AutoGen multi-agent dev team orchestrating design→code→review. README
SDK Guide
Build lightweight HTTP agents using the SDK in friendli_app.sdk.
- Import:
from friendli_app.sdk import AgentApp - Define callbacks with
@app.callback(sync, async, or generators for streaming) - Run locally:
python main.py(uses Uvicorn under the hood) - Invoke:
POST /callbacks/{callback_name}with JSON body
Example
import asyncio
from friendli_app.sdk import AgentApp
app = AgentApp()
@app.callback
def greet(name: str = "World"):
return {"message": f"Hello, {name}!"}
@app.callback
async def greet_async(name: str = "World"):
await asyncio.sleep(1)
return {"message": f"Hello, {name}! (async)"}
@app.callback
def stream(n: int = 3):
for i in range(n):
yield {"i": i, "msg": f"chunk {i+1}/{n}"}
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
Invoke callbacks
- JSON response:
curl -s -X POST http://localhost:8080/callbacks/greet \
-H 'Content-Type: application/json' \
-d '{"name": "Ada"}'
- Streaming (SSE):
curl -N -X POST http://localhost:8080/callbacks/stream \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-d '{"n": 5}'
Notes
- The request body JSON is mapped directly to the callback function parameters.
- Generator or async-generator callbacks stream Server-Sent Events (
text/event-stream). - To deploy an SDK app with the CLI, ensure your project root contains
main.pywith anAgentAppinstance.
Metadata
Release files for friendli-app 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| friendli_app-0.0.3.tar.gz | 23.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| friendli_app-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.4 kB
Release files / friendli_app-0.0.3.tar.gz
| Download URL | friendli_app-0.0.3.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
48171d8dc6ff9b7b943e8d78c32bbf70692c81568f3e5703b017cc032ab8007f
|
|
BLAKE2b-256 checksum How to use checksums |
e7a9b7b6f90abc3cd70760c2e15ebd7629edb62d2f5cf5244419caca3b5f351a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|
Release files / friendli_app-0.0.3-py3-none-any.whl
| Download URL | friendli_app-0.0.3-py3-none-any.whl |
|---|---|
| Size | 33.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a0d1e2b22445849f03f794576b4291b50fa72c5de8c1d6e8241954662819e79
|
|
BLAKE2b-256 checksum How to use checksums |
cf8e7839f62103f3054113ef0dfb00d9a542d664c6bc9a8f40434cac6c6ab7f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|