{"id":33063362,"url":"https://github.com/indilib/indi","last_synced_at":"2026-02-15T07:12:54.266Z","repository":{"id":37390646,"uuid":"58881442","full_name":"indilib/indi","owner":"indilib","description":"INDI Core Library Repository","archived":false,"fork":false,"pushed_at":"2026-02-13T07:03:03.000Z","size":421932,"stargazers_count":424,"open_issues_count":1,"forks_count":419,"subscribers_count":32,"default_branch":"master","last_synced_at":"2026-02-13T12:38:36.835Z","etag":null,"topics":["indi-clients","indi-library","indi-server"],"latest_commit_sha":null,"homepage":"https://www.indilib.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indilib.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.BSD","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":"COPYRIGHT","agents":null,"dco":null,"cla":null}},"created_at":"2016-05-15T19:56:13.000Z","updated_at":"2026-02-13T06:49:31.000Z","dependencies_parsed_at":"2023-09-24T17:41:57.685Z","dependency_job_id":"e26feb85-f881-4faa-a0b4-f56ec637ae1c","html_url":"https://github.com/indilib/indi","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/indilib/indi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indilib%2Findi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indilib%2Findi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indilib%2Findi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indilib%2Findi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indilib","download_url":"https://codeload.github.com/indilib/indi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indilib%2Findi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29472879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["indi-clients","indi-library","indi-server"],"created_at":"2025-11-14T07:00:22.737Z","updated_at":"2026-02-15T07:12:54.249Z","avatar_url":"https://github.com/indilib.png","language":"C++","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"libindi v1.9.3\n==============\n\nThe code here demonstrates the use of INDI, an Instrument-Neutral Device\nInterface protocol. See http://www.clearskyinstitute.com/INDI/INDI.pdf.\n\nArchitecture:\n\n    Typical INDI Client / Server / Driver / Device connectivity:\n\n\n    INDI Client 1 ----|                  |---- INDI Driver A  ---- Dev X\n                      |                  |\n    INDI Client 2 ----|                  |---- INDI Driver B  ---- Dev Y\n                      |                  |                     |\n     ...              |--- indiserver ---|                     |-- Dev Z\n                      |                  |\n                      |                  |\n    INDI Client n ----|                  |---- INDI Driver C  ---- Dev T\n\n\n     Client       INET       Server       UNIX     Driver          Hardware\n     processes    sockets    process      pipes    processes       devices\n\n\n\n    Indiserver is the public network access point where one or more INDI Clients\n    may contact one or more INDI Drivers. Indiserver launches each driver\n    process and arranges for it to receive the INDI protocol from Clients on\n    its stdin and expects to find commands destined for Clients on the\n    driver's stdout. Anything arriving from a driver process' stderr is copied\n    to indiserver's stderr.\n\n    Indiserver only provides convenient port, fork and data steering services.\n    If desired, a Client may run and connect to INDI Drivers directly.\n\nConstruction:\n\n    An INDI driver typically consists of one .c file, eg, mydriver.c, which\n    #includes indiapi.h to access the reference API declarations. It is\n    compiled then linked with indidrivermain.o, eventloop.o and liblilxml.a to\n    form an INDI process. These supporting files contain the implementation of\n    the INDI Driver API and need not be changed in any way. Note that\n    evenloop.[ch] provide a nice callback facility independent of INDI which\n    may be used in other projects if desired.\n    \n    The driver implementation, again in our example mydriver.c, does not\n    contain a main() but is expected to operate as an event-driver program.\n    The driver must implement each ISxxx() function but never call them. The\n    IS() functions are called by the reference implementation main() as messages\n    arrive from Clients. Within each IS function the driver performs the\n    desired tasks then may report back to the Client by calling the IDxxx()\n    functions.\n\n    The reference API provides IE() functions to allow the driver to add its\n    own callback functions if desired. The driver can arrange for functions to\n    be called when reading a file descriptor will not block; when a time\n    interval has expired; or when there is no other client traffic in progress.\n\n    The sample indiserver is a stand alone process that may be used to run one\n    or more INDI-compliant drivers. It takes the names of each driver process\n    to run in its command line args.\n\n    To build indiserver type 'make indiserver';\n    to build all the sample drivers type 'make drivers';\n    to run the sample server with all drivers type 'make run'.\n    Killing indiserver will also kill all the drivers it started.\n\nSecure remote operation:\n\n    Suppose we want to run indiserver and its clients on a remote machine, r,\n    and connect them to our favorite INDI client, XEphem, running on the\n    local machine.\n\n    From the local machine log onto the remote machine, r, by typing:\n\n\tssh2 -L 7624:s:7624 r\n\n    after logging in, run indiserver on the remote machine:\n    \n\tmake run\n\t\n    Back on the local machine, start XEphem, then open Views -\u003e Sky View -\u003e\n    Telescope -\u003e INDI panel. XEphem will connect to the remote INDI server\n    securely and automatically begin running. Sweet.\n\nTesting:\n\n    A low-level way to test the socket, forking and data steering abilities of\n    indiserver is to use the 'hose' command from the netpipes collection\n    (http://web.purplefrog.com/~thoth/netpipes/netpipes.html):\n\n    1. start indiserver using UNIX' cat program as the only INDI \"device\":\n\n\t% indiserver cat \u0026\n\n    2. use hose to connect to the \"cat\" device driver which just copies back:\n\n\t% hose localhost 7624 --slave\n\thello world\n\thello world\n\tmore stuff\n\tmore stuff\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findilib%2Findi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findilib%2Findi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findilib%2Findi/lists"}