The Python client/server package for ephaptic.
Project description
What is ephaptic?
ephaptic (adj.)
electrical conduction of a nerve impulse across an ephapse without the mediation of a neurotransmitter.
Nah, just kidding. It's an RPC framework.
ephaptic — Call your backend straight from your frontend. No JSON. No latency. No middleware.
Getting Started
-
Ephaptic is designed to be invisible. Write a function on the server, call it on the client. No extra boilerplate.
-
Plus, it's horizontally scalable with Redis (optional), and features extremely low latency thanks to msgpack.
-
Oh, and the client can also listen to events broadcasted by the server. No, like literally. You just need to add an
eventListener. Did I mention? Events can be sent to specific targets, specific users - not just anyone online.
What are you waiting for? Let's go.
Python
Client:
pip install ephaptic
Server:
pip install ephaptic[server]
from fastapi import FastAPI # or `from quart import Quart`
from ephaptic import Ephaptic
app = FastAPI() # or `app = Quart(__name__)`
ephaptic = Ephaptic.from_app(app) # Finds which framework you're using, and creates an ephaptic server.
You can also specify a custom path:
ephaptic = Ephaptic.from_app(app, path="/websocket")
And you can even use Redis for horizontal scaling!
ephaptic = Ephaptic.from_app(app, redis_url="redis://my-redis-container:6379/0")
Now, how do you expose your function to the frontend?
@ephaptic.expose
async def add(num1, num2):
return num1 + num2
Yep, it's really that simple.
But what if your code throws an error? No sweat, it just throws up on the frontend with the same details.
And, want to say something to the frontend?
await ephaptic.to(user1, user2).notification("Hello, world!", priority="high")
JavaScript/TypeScript — Browser (Svelt, React, Angular, Vite, etc.)
To use with a framework / Vite:
npm install @ephaptic/client
Then:
import { connect } from "@ephaptic/client";
const client = connect(); // Defaults to `/_ephaptic`.
Or, you can use it with a custom URL:
const client = connect({ url: '/ws' });
const client = connect({ url: 'wss://my-backend.deployment/ephaptic' });
You can even send auth objects to the server for identity loading.
const client = connect({ url: '...', auth: { token: window.localStorage.getItem('jwtToken') } })
Or, to use in your browser:
<script type="module">
import { connect } from 'https://cdn.jsdelivr.net/npm/@ephaptic/client@latest/+esm';
const client = connect();
</script>
License
© ephaptic 2025
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 ephaptic-0.1.3.tar.gz.
File metadata
- Download URL: ephaptic-0.1.3.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
726a78c6b189d1fac475660d5cbd7e23d95ac52c2ebc2bbb52da496b9cc136a0
|
|
| MD5 |
39b13d0ddb724fa5bd034a3cd99e23e9
|
|
| BLAKE2b-256 |
c1ab662e6404b4decad61b4f1b094cb881a2fd51e52f5fc13ed59ee878624b5d
|
File details
Details for the file ephaptic-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ephaptic-0.1.3-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc9cf5f562975000075d8f57dcec5900dd27fd27f7d2b45d66f7e92b44725989
|
|
| MD5 |
af06d1cc5752bfe435f0db0bb9355ecf
|
|
| BLAKE2b-256 |
e0c0bec842d14a4b9e1a5b43d6afa9c2dc9773486d6125ab12cb3c49d48b8d15
|