nexilume 0.47.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nexilume-0.47.0/CHANGELOG.md +55 -0
- nexilume-0.47.0/CONTRIBUTING.md +41 -0
- nexilume-0.47.0/CONTRIBUTOR_LICENSE_AGREEMENT.md +64 -0
- nexilume-0.47.0/LICENSE +162 -0
- nexilume-0.47.0/LICENSING.md +43 -0
- nexilume-0.47.0/MANIFEST.in +8 -0
- nexilume-0.47.0/PKG-INFO +118 -0
- nexilume-0.47.0/README.md +151 -0
- nexilume-0.47.0/README_PYPI.md +89 -0
- nexilume-0.47.0/RELEASING.md +47 -0
- nexilume-0.47.0/SECURITY.md +11 -0
- nexilume-0.47.0/deploy/addressd.env.example +3 -0
- nexilume-0.47.0/deploy/nexus-agent-addressd.service +25 -0
- nexilume-0.47.0/deploy/nexus-agent-addressd.sysusers +1 -0
- nexilume-0.47.0/deploy/run-windows-host-alias-acceptance.ps1 +56 -0
- nexilume-0.47.0/examples/a2a_agent.py +46 -0
- nexilume-0.47.0/examples/a2a_call.py +21 -0
- nexilume-0.47.0/examples/a2a_stream.py +26 -0
- nexilume-0.47.0/examples/browser_session_agent.py +412 -0
- nexilume-0.47.0/examples/callable_agent.py +61 -0
- nexilume-0.47.0/examples/direct_ipv6_caller.py +20 -0
- nexilume-0.47.0/examples/distributed_agents.py +48 -0
- nexilume-0.47.0/examples/dual_runtime_agent.py +36 -0
- nexilume-0.47.0/examples/edge_caller_mobile_agent.py +148 -0
- nexilume-0.47.0/examples/edge_private_run_agent.py +319 -0
- nexilume-0.47.0/examples/fastmcp_agent.py +51 -0
- nexilume-0.47.0/examples/friendly_agent.py +29 -0
- nexilume-0.47.0/examples/host_alias_ipv6_agent.py +22 -0
- nexilume-0.47.0/examples/hosted_caller_mobile_agent/Dockerfile +13 -0
- nexilume-0.47.0/examples/hosted_caller_mobile_agent/README.md +11 -0
- nexilume-0.47.0/examples/hosted_caller_mobile_agent/agent.py +96 -0
- nexilume-0.47.0/examples/hosted_caller_mobile_agent/requirements.txt +1 -0
- nexilume-0.47.0/examples/hosted_fastmcp_agui_agent.py +49 -0
- nexilume-0.47.0/examples/hosted_interactive_display_agent/Dockerfile +13 -0
- nexilume-0.47.0/examples/hosted_interactive_display_agent/README.md +22 -0
- nexilume-0.47.0/examples/hosted_interactive_display_agent/agent.py +88 -0
- nexilume-0.47.0/examples/hosted_interactive_display_agent/requirements.txt +1 -0
- nexilume-0.47.0/examples/hosted_workspace_inspector/Dockerfile +13 -0
- nexilume-0.47.0/examples/hosted_workspace_inspector/README.md +34 -0
- nexilume-0.47.0/examples/hosted_workspace_inspector/agent.py +124 -0
- nexilume-0.47.0/examples/hosted_workspace_inspector/requirements.txt +1 -0
- nexilume-0.47.0/examples/ipv6_agents_call_each_other.py +75 -0
- nexilume-0.47.0/examples/ipv6_callable_agent.py +67 -0
- nexilume-0.47.0/examples/live_windows_host_alias_acceptance.py +148 -0
- nexilume-0.47.0/examples/public_ipv6_agent.py +43 -0
- nexilume-0.47.0/examples/readme_launch_agent.py +68 -0
- nexilume-0.47.0/examples/register_and_invoke.py +25 -0
- nexilume-0.47.0/examples/router_echo_agent.py +153 -0
- nexilume-0.47.0/examples/router_file_agent.py +56 -0
- nexilume-0.47.0/examples/router_file_audio_agent.py +194 -0
- nexilume-0.47.0/examples/router_follow_up_agent.py +40 -0
- nexilume-0.47.0/examples/router_image_agent.py +75 -0
- nexilume-0.47.0/examples/router_private_display_agent.py +262 -0
- nexilume-0.47.0/examples/targeted_invoke.py +27 -0
- nexilume-0.47.0/install-linux.sh +192 -0
- nexilume-0.47.0/pyproject.toml +37 -0
- nexilume-0.47.0/scripts/verify_artifacts.py +72 -0
- nexilume-0.47.0/setup.cfg +4 -0
- nexilume-0.47.0/src/nexilume.egg-info/PKG-INFO +118 -0
- nexilume-0.47.0/src/nexilume.egg-info/SOURCES.txt +137 -0
- nexilume-0.47.0/src/nexilume.egg-info/dependency_links.txt +1 -0
- nexilume-0.47.0/src/nexilume.egg-info/entry_points.txt +6 -0
- nexilume-0.47.0/src/nexilume.egg-info/requires.txt +23 -0
- nexilume-0.47.0/src/nexilume.egg-info/top_level.txt +1 -0
- nexilume-0.47.0/src/nexus_agent/__init__.py +282 -0
- nexilume-0.47.0/src/nexus_agent/_terminal_child.py +21 -0
- nexilume-0.47.0/src/nexus_agent/a2a.py +1077 -0
- nexilume-0.47.0/src/nexus_agent/addressd.py +450 -0
- nexilume-0.47.0/src/nexus_agent/agent.py +1563 -0
- nexilume-0.47.0/src/nexus_agent/auth.py +1004 -0
- nexilume-0.47.0/src/nexus_agent/browser.py +859 -0
- nexilume-0.47.0/src/nexus_agent/client.py +1072 -0
- nexilume-0.47.0/src/nexus_agent/computer_runtime.py +2295 -0
- nexilume-0.47.0/src/nexus_agent/computer_tool_config.py +108 -0
- nexilume-0.47.0/src/nexus_agent/dhcpv6_iana.py +963 -0
- nexilume-0.47.0/src/nexus_agent/direct_ipv6.py +227 -0
- nexilume-0.47.0/src/nexus_agent/direct_tasks.py +334 -0
- nexilume-0.47.0/src/nexus_agent/errors.py +41 -0
- nexilume-0.47.0/src/nexus_agent/fastmcp.py +1319 -0
- nexilume-0.47.0/src/nexus_agent/files.py +180 -0
- nexilume-0.47.0/src/nexus_agent/host_alias.py +832 -0
- nexilume-0.47.0/src/nexus_agent/hosted.py +201 -0
- nexilume-0.47.0/src/nexus_agent/hosted_trust.py +62 -0
- nexilume-0.47.0/src/nexus_agent/inbox.py +167 -0
- nexilume-0.47.0/src/nexus_agent/ipv6_cli.py +639 -0
- nexilume-0.47.0/src/nexus_agent/linux_ipv6.py +827 -0
- nexilume-0.47.0/src/nexus_agent/models.py +660 -0
- nexilume-0.47.0/src/nexus_agent/outbox.py +69 -0
- nexilume-0.47.0/src/nexus_agent/public_ipv6_agent.py +285 -0
- nexilume-0.47.0/src/nexus_agent/reporting.py +3566 -0
- nexilume-0.47.0/src/nexus_agent/resume.py +321 -0
- nexilume-0.47.0/src/nexus_agent/security_profile.py +357 -0
- nexilume-0.47.0/src/nexus_agent/server.py +1345 -0
- nexilume-0.47.0/src/nexus_agent/server_auth.py +238 -0
- nexilume-0.47.0/src/nexus_agent/upstream_relay.py +319 -0
- nexilume-0.47.0/src/nexus_agent/windows_pipe.py +504 -0
- nexilume-0.47.0/src/nexus_agent/windows_service.py +423 -0
- nexilume-0.47.0/src/nexus_agent/workspace.py +168 -0
- nexilume-0.47.0/tests/test_a2a_real.py +503 -0
- nexilume-0.47.0/tests/test_agent_facade.py +765 -0
- nexilume-0.47.0/tests/test_auth.py +536 -0
- nexilume-0.47.0/tests/test_browser.py +388 -0
- nexilume-0.47.0/tests/test_browser_session_agent.py +262 -0
- nexilume-0.47.0/tests/test_computer_runtime.py +934 -0
- nexilume-0.47.0/tests/test_computer_terminal_pty.py +180 -0
- nexilume-0.47.0/tests/test_computer_tool_config.py +161 -0
- nexilume-0.47.0/tests/test_dhcpv6_iana.py +592 -0
- nexilume-0.47.0/tests/test_direct_interactions.py +394 -0
- nexilume-0.47.0/tests/test_direct_ipv6_tls_runtime.py +304 -0
- nexilume-0.47.0/tests/test_distribution_identity.py +34 -0
- nexilume-0.47.0/tests/test_docker_interactive_display_e2e.py +281 -0
- nexilume-0.47.0/tests/test_dual_runtime.py +277 -0
- nexilume-0.47.0/tests/test_edge_caller_mobile_agent.py +23 -0
- nexilume-0.47.0/tests/test_edge_caller_mobile_agent_regression_1.py +50 -0
- nexilume-0.47.0/tests/test_edge_private_run_agent.py +186 -0
- nexilume-0.47.0/tests/test_execution_controls.py +121 -0
- nexilume-0.47.0/tests/test_fastmcp.py +525 -0
- nexilume-0.47.0/tests/test_fastmcp_real.py +157 -0
- nexilume-0.47.0/tests/test_host_alias.py +496 -0
- nexilume-0.47.0/tests/test_hosted_caller_mobile_agent.py +21 -0
- nexilume-0.47.0/tests/test_hosted_cloud_trust.py +163 -0
- nexilume-0.47.0/tests/test_ipv6.py +89 -0
- nexilume-0.47.0/tests/test_ipv6_cli.py +184 -0
- nexilume-0.47.0/tests/test_linux_dhcpv6_setup.py +195 -0
- nexilume-0.47.0/tests/test_linux_ipv6_cli.py +301 -0
- nexilume-0.47.0/tests/test_long_run_reporting.py +72 -0
- nexilume-0.47.0/tests/test_public_ipv6_agent.py +171 -0
- nexilume-0.47.0/tests/test_reporting.py +1435 -0
- nexilume-0.47.0/tests/test_resume.py +50 -0
- nexilume-0.47.0/tests/test_router_echo_agent.py +40 -0
- nexilume-0.47.0/tests/test_router_file_audio_agent.py +103 -0
- nexilume-0.47.0/tests/test_router_private_display_agent.py +134 -0
- nexilume-0.47.0/tests/test_run_files.py +133 -0
- nexilume-0.47.0/tests/test_run_images.py +76 -0
- nexilume-0.47.0/tests/test_run_inbox.py +145 -0
- nexilume-0.47.0/tests/test_run_service_failures.py +66 -0
- nexilume-0.47.0/tests/test_sdk.py +938 -0
- nexilume-0.47.0/tests/test_security_profile.py +184 -0
- nexilume-0.47.0/tests/test_upstream_relay.py +207 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.47.0 — 2026-10-01
|
|
4
|
+
|
|
5
|
+
- Publish the SDK on PyPI as `nexilume`; Python imports remain `nexus_agent`
|
|
6
|
+
and CLI names, including `nexus-computer`, stay unchanged.
|
|
7
|
+
- Update Runtime self-update, Windows service packaging and optional-dependency
|
|
8
|
+
installation guidance to use the public distribution name.
|
|
9
|
+
- Use Nexus Community License 1.0 for this new release: multi-tenant service
|
|
10
|
+
operation and removal of supplied UI branding require written authorization.
|
|
11
|
+
Earlier Apache-2.0 releases and third-party licenses remain unchanged.
|
|
12
|
+
- Add the prospective contributor agreement and licensing explanation to the
|
|
13
|
+
source distribution. Commercial contact: cary.nexilume@outlook.com.
|
|
14
|
+
- When migrating from a previous GitHub wheel, uninstall `nexus-openwrt-agent-sdk`
|
|
15
|
+
before installing `nexilume`; do not install both distributions in the same
|
|
16
|
+
environment because they provide the same import package.
|
|
17
|
+
|
|
18
|
+
## 0.46.5
|
|
19
|
+
|
|
20
|
+
- Use a real POSIX PTY and an interactive shell for macOS/Linux Computer terminals, restoring the initial prompt, input echo, line editing and Ctrl+C.
|
|
21
|
+
- Apply initial terminal dimensions and subsequent resize requests on both RPC and live-stream paths.
|
|
22
|
+
- Drain final streamed output and release terminal resources when the shell exits or the stream closes. Windows retains its existing pipe transport.
|
|
23
|
+
- Add real PTY regressions for prompts, zsh editing, resizing, interruption, stream output and process cleanup. Restart Runtime and open a new terminal after installing the updated SDK; existing pairings remain valid.
|
|
24
|
+
|
|
25
|
+
## 0.46.4
|
|
26
|
+
|
|
27
|
+
- Select zsh for automatic Computer Runtime terminals on macOS, with `/bin/zsh` as the fallback path. Explicit bash/sh choices remain unchanged.
|
|
28
|
+
- Requires the accompanying Cloud update that forwards `auto` to Runtime instead of resolving it to sh on the server. Restart Runtime after upgrading and open a new terminal session.
|
|
29
|
+
- Add shell-selection regressions and a real macOS zsh execution test.
|
|
30
|
+
- Add a runnable two-Agent OpenWrt example with bidirectional calls and English README instructions.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## 0.46.3
|
|
34
|
+
|
|
35
|
+
- Include SOCKS proxy support in the `computer` extra.
|
|
36
|
+
- Send an explicit Nexus Computer User-Agent on HTTP uploads, session requests and WebSocket connections.
|
|
37
|
+
- Normalize browser Enter input for POSIX pipe-based terminals; preserve Windows input handling.
|
|
38
|
+
- Keep the existing install-then-pair workflow and device configuration during upgrades.
|
|
39
|
+
- Add macOS to the CI matrix and regression tests for headers and terminal input.
|
|
40
|
+
|
|
41
|
+
Runtime fixes adapted from [Nexus Cloud Community PR #5](https://github.com/Nexilume-AI/nexus-cloud-community/pull/5), without its generated installer or site-packages patches.
|
|
42
|
+
|
|
43
|
+
## 0.46.2
|
|
44
|
+
|
|
45
|
+
- First standalone public distribution, named `nexus-openwrt-agent-sdk`.
|
|
46
|
+
Python imports remain `nexus_agent`; the unrelated PyPI package `nexus-agent-sdk`
|
|
47
|
+
is not this SDK. Install this release's wheel or source checkout.
|
|
48
|
+
- Accept the transient Cloud state `unavailable` and continue bounded readiness polling
|
|
49
|
+
through `pending` to `ready`, including OpenWrt cold-boot recovery.
|
|
50
|
+
- Include OpenWrt and hosted MCP examples, IPv6 helpers, optional Computer/Browser support,
|
|
51
|
+
standalone tests and package verification.
|
|
52
|
+
- Update Windows service distribution lookup to the new public package name.
|
|
53
|
+
|
|
54
|
+
Earlier versions were developed in the Nexus workspace. This repository starts with a
|
|
55
|
+
clean source snapshot and does not include that workspace's history or server code.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Use GitHub Issues for reproducible bugs and feature requests, and pull requests for changes.
|
|
4
|
+
Include the SDK version, Python version, OS, minimal reproduction, and expected behavior.
|
|
5
|
+
Remove tokens, device identifiers, private addresses and user data from reports.
|
|
6
|
+
|
|
7
|
+
Use Python 3.10+ to build from source:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
python -m venv .venv
|
|
11
|
+
. .venv/bin/activate
|
|
12
|
+
# Windows: .venv\Scripts\Activate.ps1
|
|
13
|
+
python -m pip install -e '.[computer,browser,fastmcp,a2a]' pytest build twine
|
|
14
|
+
python -m pytest tests -q
|
|
15
|
+
python -m build
|
|
16
|
+
python -m twine check dist/*
|
|
17
|
+
python scripts/verify_artifacts.py
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Core tests run locally with mock services and loopback HTTP. Optional A2A/FastMCP tests
|
|
21
|
+
require the respective extras. Hardware, Docker and separate Server integration tests
|
|
22
|
+
report explicit skips when their prerequisites are absent. A core test pass is not
|
|
23
|
+
acceptance of those integrations. Tests must not use production credentials or networks.
|
|
24
|
+
|
|
25
|
+
Changes require explicit contributor agreement acceptance before merge. Keep dependencies optional where possible.
|
|
26
|
+
|
|
27
|
+
For the two Server boot integration tests, explicitly set `NEXUS_SERVER_SOURCE` to a separate Server source checkout. Without it those tests skip.
|
|
28
|
+
|
|
29
|
+
## Contribution licensing
|
|
30
|
+
|
|
31
|
+
Nexus-authored changes are distributed under the Nexus Community License 1.0.
|
|
32
|
+
Read [LICENSE](LICENSE), [LICENSING.md](LICENSING.md) and the
|
|
33
|
+
[Nexus Contributor License Agreement](CONTRIBUTOR_LICENSE_AGREEMENT.md).
|
|
34
|
+
Every contributing author must explicitly accept that agreement for their PR
|
|
35
|
+
before merge; maintainers must record the acceptance as described there.
|
|
36
|
+
Contributors retain copyright while permitting commercial use, dual licensing
|
|
37
|
+
and future relicensing. Historical contributions and third-party code are not
|
|
38
|
+
automatically subject to the new grant. Preserve all upstream notices.
|
|
39
|
+
|
|
40
|
+
许可咨询:cary.nexilume@outlook.com。每位贡献者须对本 PR 明确同意贡献者协议;
|
|
41
|
+
仅勾选模板或由维护者代为声明不构成其他作者的同意。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Nexus Contributor License Agreement — Version 1.0
|
|
2
|
+
|
|
3
|
+
This agreement is between you, the contributor, and the Nexus project copyright
|
|
4
|
+
owner operating through **cary.nexilume@outlook.com** (the Project). It applies
|
|
5
|
+
only to contributions you intentionally submit for incorporation and explicitly
|
|
6
|
+
identify when accepting this agreement. It is not a copyright assignment.
|
|
7
|
+
|
|
8
|
+
## Rights granted
|
|
9
|
+
|
|
10
|
+
You retain copyright. You grant the Project a perpetual, worldwide,
|
|
11
|
+
non-exclusive, royalty-free, irrevocable copyright license to use, reproduce,
|
|
12
|
+
modify, prepare derivative works, display, perform, distribute and sublicense
|
|
13
|
+
your contribution, in source or object form. This includes commercial hosting,
|
|
14
|
+
commercial distribution, proprietary and community editions, and sublicensing
|
|
15
|
+
under different licenses, including more permissive or more restrictive terms
|
|
16
|
+
for future releases. No further permission or payment is required for those uses.
|
|
17
|
+
|
|
18
|
+
You also grant the Project and recipients of software incorporating your
|
|
19
|
+
contribution a perpetual, worldwide, non-exclusive, royalty-free patent license
|
|
20
|
+
to make, have made, use, sell, offer for sale, import and otherwise transfer the
|
|
21
|
+
contribution. This grant covers only claims you can license that are necessarily
|
|
22
|
+
infringed by your contribution alone or in combination with the work to which
|
|
23
|
+
you submitted it. If a recipient initiates patent litigation alleging that your
|
|
24
|
+
contribution or that work infringes a patent, that recipient's patent license
|
|
25
|
+
under this agreement terminates as of filing.
|
|
26
|
+
|
|
27
|
+
## Your representations
|
|
28
|
+
|
|
29
|
+
You represent that you have authority to make these grants, including any
|
|
30
|
+
required employer permission, and that your contribution is original or that
|
|
31
|
+
you have clearly identified third-party material and its applicable licenses.
|
|
32
|
+
Do not submit confidential material or code whose terms conflict with this
|
|
33
|
+
grant. Separately identified third-party material is not relicensed by this
|
|
34
|
+
agreement. Tell maintainers if you learn that a representation is inaccurate.
|
|
35
|
+
|
|
36
|
+
Except for these representations, contributions are provided as-is, without
|
|
37
|
+
warranties or an obligation to provide support. Nothing requires you to
|
|
38
|
+
contribute future work or gives the Project ownership of unrelated work.
|
|
39
|
+
|
|
40
|
+
## Existing rights and acceptance
|
|
41
|
+
|
|
42
|
+
The Project may change licensing for future releases within these grants, but
|
|
43
|
+
cannot withdraw licenses already granted to recipients of earlier releases.
|
|
44
|
+
This agreement does not automatically apply to past contributions. A separate
|
|
45
|
+
written agreement must be obtained where past rights are insufficient.
|
|
46
|
+
|
|
47
|
+
For each pull request, every contributing author must post this statement from
|
|
48
|
+
their own account, identifying the contribution covered:
|
|
49
|
+
|
|
50
|
+
> I have read and agree to the Nexus Contributor License Agreement, Version 1.0,
|
|
51
|
+
> for my contributions in this pull request. I have authority to grant these
|
|
52
|
+
> rights, including any required employer permission, and have disclosed all
|
|
53
|
+
> third-party material.
|
|
54
|
+
|
|
55
|
+
Maintainers must verify all contributing authors' assent before merging and
|
|
56
|
+
retain the PR/comment URL, agreement version, author identity and merged commit
|
|
57
|
+
in the repository's contribution record. A checked template box, a bot response
|
|
58
|
+
or a maintainer's assertion alone is not another author's assent. If the scope
|
|
59
|
+
or authors change, obtain the additional assent before merging. A separately
|
|
60
|
+
signed agreement identifying the contributions may be used instead. Do not
|
|
61
|
+
publish private identity documents in issues or comments.
|
|
62
|
+
|
|
63
|
+
The English text is authoritative. Questions and private agreements:
|
|
64
|
+
**cary.nexilume@outlook.com**.
|
nexilume-0.47.0/LICENSE
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
Nexus Community License, Version 1.0
|
|
2
|
+
SPDX-License-Identifier: LicenseRef-Nexus-Community-1.0
|
|
3
|
+
|
|
4
|
+
Licensor: the Nexus project copyright owner granting rights in this Work,
|
|
5
|
+
contactable at cary.nexilume@outlook.com. This designation does not assert
|
|
6
|
+
ownership of third-party code or of contributions without an appropriate grant.
|
|
7
|
+
|
|
8
|
+
This is a source-available license, not the unmodified Apache License 2.0 and
|
|
9
|
+
not an OSI-approved open-source license. The Apache License 2.0 text reproduced
|
|
10
|
+
below is incorporated subject to the following additional conditions. These
|
|
11
|
+
conditions prevail for the Nexus-authored Work where they differ from that text.
|
|
12
|
+
|
|
13
|
+
1. Permitted use and multi-tenant operation
|
|
14
|
+
|
|
15
|
+
Personal use, evaluation, modification, redistribution and single-tenant
|
|
16
|
+
self-hosting, including commercial single-tenant use, are permitted subject to
|
|
17
|
+
this license. Operating the Work or a derivative of the Work as a service or
|
|
18
|
+
platform for two or more independent tenants requires prior, explicit written
|
|
19
|
+
commercial authorization from the Licensor. This applies whether or not the
|
|
20
|
+
operator charges users, and whether tenancy is implemented in one deployment
|
|
21
|
+
or in separately deployed instances of the same offered service.
|
|
22
|
+
|
|
23
|
+
A tenant is an independently administered workspace or organization with its
|
|
24
|
+
own logically separated user access, data and configuration. Multiple users,
|
|
25
|
+
projects or devices within one such tenant do not by themselves constitute
|
|
26
|
+
multiple tenants. Giving the same service a different name does not avoid this
|
|
27
|
+
condition. Merely distributing source code does not constitute operating it.
|
|
28
|
+
|
|
29
|
+
Using the Nexus SDK, Mobile client, Computer Runtime or OpenWrt client solely
|
|
30
|
+
to connect to a service does not make the client user its multi-tenant operator.
|
|
31
|
+
The service operator remains responsible for authorization. An independent
|
|
32
|
+
application that only uses public interfaces, and does not operate the Work or
|
|
33
|
+
a derivative as a multi-tenant platform, is not restricted on that account.
|
|
34
|
+
|
|
35
|
+
2. Product attribution and branding
|
|
36
|
+
|
|
37
|
+
When operating or distributing a Nexus user interface or a derivative of it,
|
|
38
|
+
retain the Nexus names, logos, copyright notices and attribution displayed by
|
|
39
|
+
the supplied interface. Do not remove, replace, obscure or make them materially
|
|
40
|
+
less visible without prior written authorization from the Licensor. Additional
|
|
41
|
+
branding may be displayed without suggesting endorsement and without obscuring
|
|
42
|
+
the retained attribution. Ordinary responsive or accessibility adjustments that
|
|
43
|
+
preserve its meaning and visibility are permitted.
|
|
44
|
+
|
|
45
|
+
This applies to Nexus web consoles, Nexus-authored LuCI pages, Mobile screens
|
|
46
|
+
and other supplied graphical interfaces. It does not require an independent
|
|
47
|
+
interface or a headless SDK/API integration to add a Nexus logo it never
|
|
48
|
+
displayed. Source and redistribution notices must still be retained as required
|
|
49
|
+
by this license. No general trademark license or endorsement is granted.
|
|
50
|
+
|
|
51
|
+
3. Contributions and future licensing
|
|
52
|
+
|
|
53
|
+
Contributions intended for incorporation must be covered by the separate Nexus
|
|
54
|
+
Contributor License Agreement, Version 1.0, or an individually executed written
|
|
55
|
+
agreement accepted by the Licensor. The contribution agreement provides the
|
|
56
|
+
rights needed for commercial use, dual licensing and future releases under
|
|
57
|
+
different, more permissive or more restrictive terms. Contributors retain
|
|
58
|
+
ownership. Mere use of the software is not acceptance of a contributor grant.
|
|
59
|
+
|
|
60
|
+
License changes apply to versions offered under the changed terms; they do not
|
|
61
|
+
revoke rights already granted for an earlier version. Existing contributions
|
|
62
|
+
are not deemed to have accepted a new contributor agreement retroactively.
|
|
63
|
+
|
|
64
|
+
4. Scope, prior releases and third-party material
|
|
65
|
+
|
|
66
|
+
These terms apply only to the Nexus-authored material made available under this
|
|
67
|
+
license and contributions the Licensor is authorized to license this way.
|
|
68
|
+
Separately identified third-party files and dependencies keep their licenses,
|
|
69
|
+
including any Apache, MIT or GPL obligations. Do not remove their notices or
|
|
70
|
+
apply these additional conditions to their independent licenses. A complete
|
|
71
|
+
OpenWrt firmware image is not licensed solely under these terms. If applicable
|
|
72
|
+
third-party obligations do not permit a proposed combination, obtain a compatible
|
|
73
|
+
license or do not distribute that combination.
|
|
74
|
+
|
|
75
|
+
Previously distributed Apache-2.0 versions remain available under the grants
|
|
76
|
+
made with those versions; this license does not revoke or restrict those grants.
|
|
77
|
+
Private Enterprise implementation is not granted by publishing this Work.
|
|
78
|
+
|
|
79
|
+
5. Commercial exceptions and distribution
|
|
80
|
+
|
|
81
|
+
Contact cary.nexilume@outlook.com for multi-tenant, branding or other commercial
|
|
82
|
+
permissions. A separate written agreement must identify its covered parties,
|
|
83
|
+
software and permitted use. A request for permission is not authorization.
|
|
84
|
+
Redistributors must include this entire license, not only its Apache portion.
|
|
85
|
+
The English text governs; translated explanations are informational.
|
|
86
|
+
|
|
87
|
+
Incorporated Apache License 2.0 terms (unmodified text follows)
|
|
88
|
+
============================================================
|
|
89
|
+
|
|
90
|
+
Apache License
|
|
91
|
+
|
|
92
|
+
Version 2.0, January 2004
|
|
93
|
+
|
|
94
|
+
http://www.apache.org/licenses/
|
|
95
|
+
|
|
96
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
97
|
+
|
|
98
|
+
1. Definitions.
|
|
99
|
+
|
|
100
|
+
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
|
101
|
+
|
|
102
|
+
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
|
103
|
+
|
|
104
|
+
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
|
105
|
+
|
|
106
|
+
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
|
107
|
+
|
|
108
|
+
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
|
109
|
+
|
|
110
|
+
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
|
111
|
+
|
|
112
|
+
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
|
113
|
+
|
|
114
|
+
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
|
115
|
+
|
|
116
|
+
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
|
117
|
+
|
|
118
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
|
119
|
+
|
|
120
|
+
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
|
121
|
+
|
|
122
|
+
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
|
123
|
+
|
|
124
|
+
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
|
125
|
+
|
|
126
|
+
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
|
127
|
+
|
|
128
|
+
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
|
129
|
+
|
|
130
|
+
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
|
131
|
+
|
|
132
|
+
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
|
133
|
+
|
|
134
|
+
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
|
135
|
+
|
|
136
|
+
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
|
137
|
+
|
|
138
|
+
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
|
139
|
+
|
|
140
|
+
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
|
141
|
+
|
|
142
|
+
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
|
143
|
+
|
|
144
|
+
END OF TERMS AND CONDITIONS
|
|
145
|
+
|
|
146
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
147
|
+
|
|
148
|
+
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
|
149
|
+
|
|
150
|
+
Copyright [yyyy] [name of copyright owner]
|
|
151
|
+
|
|
152
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
153
|
+
you may not use this file except in compliance with the License.
|
|
154
|
+
You may obtain a copy of the License at
|
|
155
|
+
|
|
156
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
157
|
+
|
|
158
|
+
Unless required by applicable law or agreed to in writing, software
|
|
159
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
160
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
161
|
+
See the License for the specific language governing permissions and
|
|
162
|
+
limitations under the License.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Nexus licensing / Nexus 许可说明
|
|
2
|
+
|
|
3
|
+
Current Nexus-authored releases carrying this notice use the **Nexus Community
|
|
4
|
+
License 1.0** (`LicenseRef-Nexus-Community-1.0`); read [LICENSE](LICENSE) for the
|
|
5
|
+
complete, authoritative English terms. This is **source-available**, not plain
|
|
6
|
+
Apache-2.0 or OSI-approved open source.
|
|
7
|
+
|
|
8
|
+
| Use | Community terms |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| Personal use, evaluation, single-tenant self-hosting | Permitted, including commercial single-tenant use |
|
|
11
|
+
| Operating a service for multiple independent tenants | Prior written commercial authorization required, even if free |
|
|
12
|
+
| Removing or replacing existing Nexus UI branding | Prior written authorization required |
|
|
13
|
+
| Headless SDK integration or an independently built UI | No newly imposed logo display; preserve applicable notices |
|
|
14
|
+
| Client connection to an authorized multi-tenant Cloud | Does not itself make the client user the service operator |
|
|
15
|
+
| Future contribution to Nexus | Explicit contributor agreement before merge |
|
|
16
|
+
|
|
17
|
+
**Licensing contact: [cary.nexilume@outlook.com](mailto:cary.nexilume@outlook.com).**
|
|
18
|
+
The licensor is the Nexus copyright owner, not an invented corporate entity.
|
|
19
|
+
Contributors retain copyright and grant the rights described in
|
|
20
|
+
[CONTRIBUTOR_LICENSE_AGREEMENT.md](CONTRIBUTOR_LICENSE_AGREEMENT.md).
|
|
21
|
+
|
|
22
|
+
Earlier versions distributed under Apache-2.0 retain those grants. This notice
|
|
23
|
+
does not relicense upstream dependencies, OpenWrt/GPL components, or existing
|
|
24
|
+
third-party contributions without authorization. Preserve their notices.
|
|
25
|
+
Public documentation does not license private Enterprise implementation.
|
|
26
|
+
Release dates and commits, not a retroactive calendar cutoff, identify which
|
|
27
|
+
license accompanies a particular version. Existing published artifacts are not
|
|
28
|
+
replaced under the same version number.
|
|
29
|
+
|
|
30
|
+
## 中文说明(以英文许可证为准)
|
|
31
|
+
|
|
32
|
+
- 个人使用、评估及单租户自托管允许,包括单租户商业使用。
|
|
33
|
+
- 为多个独立租户运营服务,无论收费与否,都需要项目方事先书面商业授权。
|
|
34
|
+
- 不得未经授权移除、替换、遮挡或显著弱化 Nexus 界面已有品牌和版权标识。
|
|
35
|
+
无界面的 SDK 集成不要求新增 Logo,但仍须保留许可证和版权声明。
|
|
36
|
+
- 多个用户、Project 或设备不自动等于多个租户;租户定义见 LICENSE。
|
|
37
|
+
- 贡献者保留版权,通过独立贡献者协议明确授权商业使用、双重许可和后续版本重新许可。
|
|
38
|
+
不能仅因更新贡献指南,就推定历史贡献者已经同意。
|
|
39
|
+
- 历史 Apache-2.0 版本授权不撤回;第三方组件保持原许可证。
|
|
40
|
+
- 本许可属于“源码可用”,不应继续宣传为纯 Apache-2.0 或 OSI 开源许可。
|
|
41
|
+
|
|
42
|
+
咨询及授权邮箱:**cary.nexilume@outlook.com**。是否符合特定使用场景,应结合
|
|
43
|
+
完整条款及依赖许可判断;发布者应在对外发布前完成必要的法律审核。
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
include LICENSE LICENSING.md CONTRIBUTOR_LICENSE_AGREEMENT.md README.md CHANGELOG.md CONTRIBUTING.md SECURITY.md RELEASING.md
|
|
2
|
+
include README_PYPI.md
|
|
3
|
+
include install-linux.sh
|
|
4
|
+
recursive-include examples *.py *.md *.txt Dockerfile
|
|
5
|
+
recursive-include deploy *.example *.service *.sysusers *.ps1
|
|
6
|
+
recursive-include tests *.py
|
|
7
|
+
recursive-include scripts *.py
|
|
8
|
+
global-exclude *.pyc
|
nexilume-0.47.0/PKG-INFO
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nexilume
|
|
3
|
+
Version: 0.47.0
|
|
4
|
+
Summary: Python Agent SDK for Nexus OpenWrt and hosted MCP runtimes
|
|
5
|
+
Author: Nexus OpenWrt Team
|
|
6
|
+
License-Expression: LicenseRef-Nexus-Community-1.0
|
|
7
|
+
Project-URL: Repository, https://github.com/Nexilume-AI/nexus-agent-sdk-python
|
|
8
|
+
Project-URL: Issues, https://github.com/Nexilume-AI/nexus-agent-sdk-python/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/Nexilume-AI/nexus-agent-sdk-python/blob/main/CHANGELOG.md
|
|
10
|
+
Requires-Python: >=3.9
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Provides-Extra: fastmcp
|
|
14
|
+
Requires-Dist: fastmcp<4,>=3.0; extra == "fastmcp"
|
|
15
|
+
Provides-Extra: fastmcp-tasks
|
|
16
|
+
Requires-Dist: fastmcp<4,>=3.0; extra == "fastmcp-tasks"
|
|
17
|
+
Requires-Dist: fastmcp-tasks<1,>=0.1; extra == "fastmcp-tasks"
|
|
18
|
+
Provides-Extra: a2a
|
|
19
|
+
Requires-Dist: a2a-sdk<2,>=1.1; extra == "a2a"
|
|
20
|
+
Provides-Extra: windows
|
|
21
|
+
Requires-Dist: pywin32>=306; platform_system == "Windows" and extra == "windows"
|
|
22
|
+
Provides-Extra: browser
|
|
23
|
+
Requires-Dist: playwright<2,>=1.50; extra == "browser"
|
|
24
|
+
Provides-Extra: computer
|
|
25
|
+
Requires-Dist: websockets<16,>=15; extra == "computer"
|
|
26
|
+
Requires-Dist: cryptography<51,>=50.0.1; extra == "computer"
|
|
27
|
+
Requires-Dist: python-socks[asyncio]<3,>=2.4.3; extra == "computer"
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# nexilume — Nexus Python Agent SDK
|
|
31
|
+
|
|
32
|
+
Build callable Agents and connect an authorized Computer to Nexus Cloud with
|
|
33
|
+
the same Python SDK. Supports hosted MCP runtimes, OpenWrt registration and
|
|
34
|
+
routed invocation, plus optional Computer, Browser and A2A integrations.
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
Use a virtual environment. The dependency-free core supports Python 3.9+;
|
|
39
|
+
Python 3.12 is recommended for optional integrations.
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
python -m pip install nexilume==0.47.0
|
|
43
|
+
python -m pip install "nexilume[fastmcp]==0.47.0"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The distribution name is **nexilume**, while the import name remains
|
|
47
|
+
**nexus_agent**. The PyPI project named `nexus-agent-sdk` is unrelated.
|
|
48
|
+
|
|
49
|
+
If migrating from our older GitHub wheel, uninstall `nexus-openwrt-agent-sdk`
|
|
50
|
+
first, then install `nexilume` in the same environment. Do not install both:
|
|
51
|
+
they contain the same import namespace. Existing Computer pairing configuration
|
|
52
|
+
is separate from the package and is not removed by pip uninstall.
|
|
53
|
+
|
|
54
|
+
## A hosted MCP Agent
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from nexus_agent import NexusAgent
|
|
58
|
+
|
|
59
|
+
agent = NexusAgent(runtime="hosted", cloud_name="Echo Agent")
|
|
60
|
+
|
|
61
|
+
@agent.capability("demo.echo")
|
|
62
|
+
def echo(payload):
|
|
63
|
+
return {"echo": payload}
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
agent.run()
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Install the `fastmcp` extra to run this example. Starting the process alone does
|
|
70
|
+
not register it in Cloud; configure or deploy its hosted runtime through your
|
|
71
|
+
Nexus installation. OpenWrt LAN registration is a separate supported mode.
|
|
72
|
+
|
|
73
|
+
## Computer Runtime
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
python -m pip install "nexilume[computer,browser]==0.47.0"
|
|
77
|
+
nexus-computer setup "<pairing-url-from-your-cloud>"
|
|
78
|
+
nexus-computer status
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Run as your ordinary OS user. Wait until connected, then attach and authorize
|
|
82
|
+
the Computer in Cloud. No inbound SSH port is needed. Browser control requires
|
|
83
|
+
a compatible local Chromium browser and the `browser` extra. Never share
|
|
84
|
+
pairing links, device keys or tokens.
|
|
85
|
+
|
|
86
|
+
## Optional integrations
|
|
87
|
+
|
|
88
|
+
| Extra | Purpose |
|
|
89
|
+
| --- | --- |
|
|
90
|
+
| `fastmcp` | Hosted MCP tools |
|
|
91
|
+
| `fastmcp-tasks` | MCP task integration |
|
|
92
|
+
| `computer` | Outbound Computer Runtime |
|
|
93
|
+
| `browser` | Browser automation integration |
|
|
94
|
+
| `a2a` | Agent-to-Agent integration |
|
|
95
|
+
| `windows` | Windows service helpers |
|
|
96
|
+
|
|
97
|
+
## Documentation and support
|
|
98
|
+
|
|
99
|
+
- [Repository and bilingual guides](https://github.com/Nexilume-AI/nexus-agent-sdk-python)
|
|
100
|
+
- [Examples](https://github.com/Nexilume-AI/nexus-agent-sdk-python/tree/main/examples)
|
|
101
|
+
- [Issue tracker](https://github.com/Nexilume-AI/nexus-agent-sdk-python/issues)
|
|
102
|
+
- [Detailed guide](https://github.com/Nexilume-AI/nexus-agent-sdk-python/blob/main/README_GUIDE.md)
|
|
103
|
+
|
|
104
|
+
## License
|
|
105
|
+
|
|
106
|
+
Version 0.47.0 uses **Nexus Community License 1.0**
|
|
107
|
+
(`LicenseRef-Nexus-Community-1.0`), a source-available license, not unmodified
|
|
108
|
+
Apache-2.0 or an OSI-approved open-source license. The complete LICENSE is
|
|
109
|
+
bundled in the wheel and source distribution.
|
|
110
|
+
|
|
111
|
+
Personal and single-tenant self-hosted use, including commercial single-tenant
|
|
112
|
+
use, is allowed under the license. Operating a multi-tenant service or removing
|
|
113
|
+
supplied Nexus UI branding requires prior written authorization. Headless SDK
|
|
114
|
+
integration does not require adding a new logo. Earlier Apache-2.0 grants and
|
|
115
|
+
third-party licenses remain unchanged. New contributions require the explicit
|
|
116
|
+
contributor agreement included in the source distribution.
|
|
117
|
+
|
|
118
|
+
Commercial licensing: **cary.nexilume@outlook.com**.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Nexus Agent SDK for Python
|
|
4
|
+
|
|
5
|
+
**Write Python. Publish capabilities. Connect devices.**
|
|
6
|
+
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](README_GUIDE.md)
|
|
9
|
+
[](#citation)
|
|
10
|
+
[](https://github.com/Nexilume-AI/nexus-agent-sdk-python/actions/workflows/ci.yml)
|
|
11
|
+
|
|
12
|
+
`Python` · `MCP` · `Computer Runtime`
|
|
13
|
+
|
|
14
|
+
**English** · [简体中文](README_zh.md)
|
|
15
|
+
|
|
16
|
+
[Highlights](#highlights) · [Quick start](#quick-start) · [Documentation](#documentation) · [Ecosystem](#ecosystem) · [Contributing](#contributing) · [Citation](#citation)
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
Build callable Agents, expose MCP tools, register through OpenWrt, and connect an authorized Computer Runtime to Nexus Cloud.
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
*Workflow illustration, not a product screenshot. Connections require the setup and authorization described below.*
|
|
25
|
+
|
|
26
|
+
## From Python to a private Run
|
|
27
|
+
|
|
28
|
+
**Enterprise UI, October 1, 2026.** This real Docker-hosted SDK example uses
|
|
29
|
+
`NexusMCPServer`, `plan`, `chat.ask()` and private file upload. It is deterministic,
|
|
30
|
+
uses no paid model and does not access a personal device.
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
<details>
|
|
35
|
+
<summary>View the generated Markdown file</summary>
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
</details>
|
|
40
|
+
|
|
41
|
+
[Reproduce the capture](docs/media/capture-notes.md). Cloud UI is a separate
|
|
42
|
+
installation; these Enterprise screenshots do not expand the Community feature set.
|
|
43
|
+
|
|
44
|
+
## Highlights
|
|
45
|
+
|
|
46
|
+
| Build | Use | Start here |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| **A callable Python Agent** | Dependency-free core; local HTTP serving | [Local round trip](README_GUIDE.md#run-your-first-agent) |
|
|
49
|
+
| **An MCP tool server** | Hosted mode with the optional FastMCP integration | [Hosted runtime](README_GUIDE.md#use-a-hosted-mcp-runtime) |
|
|
50
|
+
| **Distributed capabilities** | Registration, renewal and routed calls through OpenWrt | [Two-Agent walkthrough](README_GUIDE.md#example-two-distributed-agents-calling-each-other) |
|
|
51
|
+
| **An Attached Computer** | Outbound WSS for authorized files, terminal and browser operations | [Computer setup](README_GUIDE.md#set-up-computer-runtime) |
|
|
52
|
+
|
|
53
|
+
## Quick start
|
|
54
|
+
|
|
55
|
+
Use Python **3.12** for the optional integrations. Core runtime supports Python 3.9+; building from source needs 3.10+. Start in a virtual environment:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
python -m venv .venv
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Activate with `source .venv/bin/activate` on bash/zsh, or `.venv\Scripts\Activate.ps1` in Windows PowerShell. Then:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
python -m pip install "nexilume[fastmcp]==0.47.0"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Save this as `echo_agent.py`:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from nexus_agent import NexusAgent
|
|
71
|
+
|
|
72
|
+
agent = NexusAgent(runtime="hosted", cloud_name="Echo Agent")
|
|
73
|
+
|
|
74
|
+
@agent.capability("demo.echo")
|
|
75
|
+
def echo(payload):
|
|
76
|
+
return {"echo": payload}
|
|
77
|
+
|
|
78
|
+
if __name__ == "__main__":
|
|
79
|
+
agent.run()
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Run `python echo_agent.py` to start hosted mode. Use the [hosted guide](README_GUIDE.md#use-a-hosted-mcp-runtime) to connect/deploy it; running the process alone does not register it in Cloud. For a complete local HTTP request and expected response, use the [local round-trip tutorial](README_GUIDE.md#run-your-first-agent).
|
|
83
|
+
|
|
84
|
+
> [!IMPORTANT]
|
|
85
|
+
> The PyPI distribution is **nexilume**, imported as **nexus_agent**. The unrelated PyPI package `nexus-agent-sdk` is not this SDK. When migrating from an older GitHub wheel, uninstall `nexus-openwrt-agent-sdk` first in the same environment; these distributions share an import namespace.
|
|
86
|
+
|
|
87
|
+
## Connect your computer
|
|
88
|
+
|
|
89
|
+
Install the `computer,browser` extras and a compatible browser, then create a pairing link in your own Cloud installation:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
python -m pip install "nexilume[computer,browser]==0.47.0"
|
|
93
|
+
nexus-computer setup "<pairing-url-from-your-cloud>"
|
|
94
|
+
nexus-computer status
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Run as your normal OS user. Wait for `connected`, then attach and authorize the device in Cloud. No inbound SSH port is needed. Do not publish pairing URLs, tokens or device keys.
|
|
98
|
+
|
|
99
|
+
## Documentation
|
|
100
|
+
|
|
101
|
+
| Goal | Guide or example |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| Install wheels and choose extras | [Installation](README_GUIDE.md#install) |
|
|
104
|
+
| Register and invoke through OpenWrt | [Router walkthrough](README_GUIDE.md#connect-to-openwrt) |
|
|
105
|
+
| Run the same application in Cloud or on the edge | [Dual runtime example](examples/dual_runtime_agent.py) |
|
|
106
|
+
| Browser, streaming, files and A2A examples | [Example directory](README_GUIDE.md#explore-the-examples) |
|
|
107
|
+
| Upgrade Computer Runtime without re-pairing | [Upgrade guide](README_GUIDE.md#upgrade-an-existing-computer-runtime) |
|
|
108
|
+
| Linux IPv6 and platform acceptance limits | [IPv6](README_GUIDE.md#configure-agent-ipv6-on-linux) · [Validation scope](README_GUIDE.md#linux-validation) |
|
|
109
|
+
| Diagnose common errors | [Troubleshooting](README_GUIDE.md#troubleshooting) |
|
|
110
|
+
| Follow changes | [Changelog](CHANGELOG.md) |
|
|
111
|
+
|
|
112
|
+
Windows/Linux/macOS behavior depends on the selected extra, OS and installed browser. Existing platform tests are not equivalent to full device acceptance on every platform; see the validation scope.
|
|
113
|
+
|
|
114
|
+
## Ecosystem
|
|
115
|
+
|
|
116
|
+
| Project | Role | Install separately? |
|
|
117
|
+
| --- | --- | --- |
|
|
118
|
+
| [Cloud Community](https://github.com/Nexilume-AI/nexus-cloud-community) | Server, Web Console and bundled Cloud Relay | Main workspace |
|
|
119
|
+
| [Python SDK](https://github.com/Nexilume-AI/nexus-agent-sdk-python) | Agent applications and outbound Computer Runtime | Yes |
|
|
120
|
+
| [OpenWrt](https://github.com/Nexilume-AI/nexus-openwrt) | Edge registration and capability routing | Optional |
|
|
121
|
+
| [Mobile](https://github.com/Nexilume-AI/nexus-mobile) | Authorized Android device integration | Optional |
|
|
122
|
+
| [Documentation](https://github.com/Nexilume-AI/nexus-docs) | User guides and reference | Read online or build locally |
|
|
123
|
+
|
|
124
|
+
Repository access, release availability and compatibility determine which integrations you can install. Cloud installation does not install device runtimes.
|
|
125
|
+
|
|
126
|
+
## Contributing
|
|
127
|
+
|
|
128
|
+
Start with [CONTRIBUTING.md](CONTRIBUTING.md). Small reproducible fixes, clearer tutorials, translations and sanitized examples are welcome. Use [Issues](https://github.com/Nexilume-AI/nexus-agent-sdk-python/issues) for reproducible bugs; include versions and redacted diagnostics, never credentials or private files.
|
|
129
|
+
|
|
130
|
+
Follow [SECURITY.md](SECURITY.md) for security reports. Release checks and CI are not a guarantee of production readiness on every platform.
|
|
131
|
+
|
|
132
|
+
## Citation
|
|
133
|
+
|
|
134
|
+
If this software helps your work, cite the repository and record the exact release or commit you used. [CITATION.cff](CITATION.cff) provides machine-readable software metadata; this is a **software citation**, not a claim of a peer-reviewed paper or DOI.
|
|
135
|
+
|
|
136
|
+
```bibtex
|
|
137
|
+
@misc{nexus_agent_sdk_python,
|
|
138
|
+
author = {{Nexus contributors}},
|
|
139
|
+
title = {Nexus Agent SDK for Python},
|
|
140
|
+
howpublished = {\url{https://github.com/Nexilume-AI/nexus-agent-sdk-python}},
|
|
141
|
+
note = {Software; specify the release or commit used}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## License
|
|
146
|
+
|
|
147
|
+
Nexus-authored source is distributed under [Nexus Community License 1.0](LICENSE). Third-party components retain their own licenses and notices. Documentation does not grant rights to separately distributed Enterprise implementation.
|
|
148
|
+
|
|
149
|
+
### Licensing conditions / 许可条件
|
|
150
|
+
|
|
151
|
+
Source-available, not unmodified Apache-2.0 or OSI-approved open source. Multi-tenant service operation and removal of existing Nexus UI branding require prior written authorization. Earlier Apache-2.0 grants and third-party licenses remain unchanged. Contributions require explicit agreement permitting commercial use and future relicensing. 许可说明:[LICENSING.md](LICENSING.md)。授权联系:**cary.nexilume@outlook.com**。
|