PHPackages                             seanmorris/subspace - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. seanmorris/subspace

ActiveLibrary

seanmorris/subspace
===================

Kallisti websocket server.

054PHP

Since Jan 24Pushed 4y ago1 watchersCompare

[ Source](https://github.com/seanmorris/subspace-server)[ Packagist](https://packagist.org/packages/seanmorris/subspace)[ RSS](/packages/seanmorris-subspace/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Subspace Server
===============

[](#subspace-server)

Websocket Server
----------------

[](#websocket-server)

Invoke the server in code:

```
$server = new \SeanMorris\SubSpace\WebSocketServer;

while(true)
{
	$server->tick();
}
```

or use the `seanmorris/ids` command line tool:

```
idilic server
```

Configuration
-------------

[](#configuration)

### Subspace

[](#subspace)

Subspace needs some network configuration.

You can see an example `yaml` configuration below, along with the default values of each config.

```
---
subspace:
  jwtSecret: # Secret value for creating JWTs.
             # This value MUST be set.

  address: 0.0.0.0:9998 # Address:port to listen on.
                        # 0.0.0.0:9998   - Accept connections from all addresses
                        # 127.0.0.1:9998 - Accept connections only from 127.0.0.1

  messageSizeMax: 2048  # Max bytes per message (including overhead)

  stored:
    storage: file://tmp/storage-dir/ # Stored messages directory.
    messageTotalMax: 32768 # Max bytes total for stored messages.
    messageSizeMax: 2048   # Max bytes for single stored message.

  idleTimeout: 30000 # Milliseconds to wait for user inactity before disconnection.
  pingTimeout:  1000 # Milliseconds to wait for ping response before disconnection.
  netTimeout:   5000 # Milliseconns to wait for activity before sending ping.
  throttle:     8000 # MICROseconds to wait between frames.

  sleep:     500  # Milliseconds to sleep when no users connected.
  deepSleep: 2500 # Milliseconds to sleep when no users connected.
  doze:      25   # Number of times to sleep before switchin to deepSleep.
```

### Kallisti

[](#kallisti)

```
kallisti:
  channels: # Specify classes for channels by selector:
  	channel:     \Vendor\Package\ChannelClass
  	selector:    \Vendor\Package\ChannelClass
  	wild:*:card: \Vendor\Package\ChannelClass
...
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/df0c384d917994b35efdf4aa78d3f1e06737d314bd9815c1321ed45ba73cbc50?d=identicon)[seanmorris](/maintainers/seanmorris)

---

Top Contributors

[![seanmorris](https://avatars.githubusercontent.com/u/640101?v=4)](https://github.com/seanmorris "seanmorris (36 commits)")

### Embed Badge

![Health badge](/badges/seanmorris-subspace/health.svg)

```
[![Health](https://phpackages.com/badges/seanmorris-subspace/health.svg)](https://phpackages.com/packages/seanmorris-subspace)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
